我不知道我做错了什么,我试图通过服务全局存储数据并将数据从一个控制器传递到另一个控制器。我将数据存储在一个控制器中,并确认它存储在buildReportController
的开头。然后,当我点击我的用户界面上的按钮时,它会打开reportResultsController
。但问题是,我可以通过buildReportController
在locationHistoryService.store()
中正确存储数据,但是当我转到reportResultsController and call
locationHistoryService.get(), the
previousLocation variable in
locationHistoryService时`是空的,好像数据从未设置过一样。关于我为什么或如何“全局”存储数据并在控制器之间传递数据的任何想法?以下是我的尝试。谢谢!
在reportView.js
中angular.module('reportView', [])
.service('locationHistoryService', function(){
var previousLocation = "";
return {
store: function(location){
previousLocation = location;
},
get: function(){
return previousLocation;
}
};
});
在buildReport.js
中angular.module('buildReport', ['reportView'])
.controller('buildReportController', ['$rootScope', 'locationHistoryService'], function($rootScope, locationHistoryService){
$rootScope.$on('$locationChangeSuccess', function(e, newLocation, oldLocation){
locationHistoryService.store(oldLocation);
console.log("Old location: ", oldLocation);
});
}
在reportResults.js
中angular.module('reportResults', ['reportView'])
.controller('reportResultsController', ['$rootScope', 'locationHistoryService'], function($rootScope, locationHistoryService){
console.log("location : ", locationHistoryService.get());
}
答案 0 :(得分:0)
reportReesults.js中的locationHistoryService.get()
方法在buildReport.js中设置之前被调用。
如果你在设置previousLocation变量时宣布它会更好。
在reportView.js
中angular.module('reportView', [])
.service('locationHistoryService',['$rootScope'] ,function($rootScope){
var previousLocation = "";
return {
store: function(location){
previousLocation = location;
$rootScope.$broadcast('previous-location-set');
},
get: function(){
return previousLocation;
}
};
});
在reportResults.js
中angular.module('reportResults', ['reportView'])
.controller('reportResultsController', ['$rootScope', 'locationHistoryService'], function($rootScope, locationHistoryService){
$rootScope.$on('previous-location-set', function(){
console.log("location : ", locationHistoryService.get());
});
}
答案 1 :(得分:0)
您的webapp应该只有一个模块,它由angular自动引导,其他模块作为依赖项。编写服务的语法不正确。您编写了.service
但返回.factory
应返回的对象。以下是代码http://codepen.io/Chyngyz/pen/NxbdpW?editors=101
另外你写的控制器的安全缩小语法不正确,控制器的功能块应该是数组中的最后一项。