Я пытаюсь обмениваться данными между двумя контроллерами в AngularJS. Данные загружаются через вызов ajax. Это хорошо работает внутри NavCtrl, но при вызове CommonBoardService.getSharedData();
из DashboardCtrl
он возвращает null. Я предполагаю, что это потому, что DashboardCtrl
делает вызов до того, как CommonBoardService
установил данные через fetchBoards
в NavCtrl
. Я изо всех сил пытаюсь найти решение, чтобы обойти это. Любая помощь будет оценена по достоинству.Угловая общая услуга, возвращающая нуль контроллеру
CommonBoardService.js
angular.module('EefApp').service('CommonBoardService', ['Restangular', function (Restangular) {
this.boards = null;
Restangular.setBaseUrl("/api");
var baseBoards = Restangular.all("boards");
this.fetchBoards = function() {
return baseBoards.getList();
};
this.setSharedData = function (boards) {
this.boards = boards;
};
this.getSharedData = function() {
return this.boards;
}
}]);
NavCtrl.js
angular.module('EefApp')
.controller('NavCtrl', ['$scope', 'CommonBoardService', function($scope, CommonBoardService){
CommonBoardService.fetchBoards().then(function(boards){
$scope.allBoards = boards;
CommonBoardService.setSharedData(boards);
}, function(){
console.log(res, "Error Has Occured");
});
}]);
DashboardCtrl.js
angular.module('EefApp')
.controller('DashboardCtrl', ['$scope', 'CommonBoardService', function($scope, CommonBoardService){
$scope.allBoards = CommonBoardService.getSharedData();
}]);
Это, похоже, выполняет эту работу. В моих контроллерах у меня теперь есть CommonBoardService.getSharedData(); прослушивание события $ emit на корнеплодах. Благодаря! – Eef