Как вы увидите, я новичок в AngularJS, JS и в веб-разработке вообще =) очень сожалею об этом, но я стараюсь.
Я пытаюсь создать массивную веб-форму (около 200 различных полей) с контроллерами AngularJS. Мне нужен доступ от контроллера к корневому источнику данных. Команда AngularJS спрашивает, не делают ли Сервисы только для хранения данных, но я хочу сделать сервис для загрузки и сохранения данных (при запуске в .json файлы на сервере).
Услуги:
AppName.factory('MasterData', ['$rootScope', '$http', '$q', '$log',
function($rootScope, $http, $q, $log) {
var responseData;
$http.get('/getdata.php').then(function (response) {
responseData = response.data;
console.log(response.data);
});
return responseData;
}]);
Контроллер:
AppName.controller('justController', ['$scope', 'MasterData', '$log',
function ($scope, MasterData, $log) {
$scope.data = MasterData.justControllerSectionData;
console.log(MasterData);
}
]);
Возврат контроллера undefined. Но console.log из службы возвращает объект. Я чувствую, что проблема слишком проста, но я не могу найти, как ее решить:( Также я не могу использовать функцию, как .getData(), от контроллера к службе, потому что она запрашивает данные с сервера каждый раз, когда какой-либо контроллер загружается. У меня есть маршруты в приложении AngularJS с 12-14 контроллерами (полная веб-форма, разделенная по разделам), и я думаю, что это полезно, чтобы получить данные из бэкэнда один раз.
P.S. Я думаю, что существует проблема с promises, но когда я пытаюсь использовать такой код:
var defer = $q.defer();
$http.get('/getdata.php').success(function(data){
defer.resolve(data);
});
return defer;
У меня есть объект с разрешением, отклонение и т.д. И действительно не могу понять, что я могу с ним сделать: (
Помогите мне получить данные в контроллере:)