我想在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