我想在AngularJS中的2个控制器之间共享数据。数据通过ajax调用加载。这可以在NavCtrl内正常工作,但是当从DashboardCtrl
调用CommonBoardService.getSharedData();
时,它将返回null。我假设这是因为在CommonBoardService
已通过在NavCtrl
中设置数据之前DashboardCtrl
正在拨打电话。我正在努力想出一个解决方案来解决这个问题。任何帮助,将不胜感激。角度共享服务返回null到控制器
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();在Rootcope上监听$ emit事件。谢谢! – Eef