所以我有两个不同的html页面,两个不同的ng-apps和两个控制器。我试图在控制器和不同模块之间共享数据。在两个不同的ng-app控制器之间共享数据不能通过共享服务工作
下面是应用程序的基本结构
的index.html - indexController.js 的login.html - loginController.js
sharedService.js
angular.module('sharedService', []).service('SharedService', function() {
var SharedService;
SharedService = (function() {
function SharedService() {
console.log('initializing');
}
var _data;
SharedService.prototype.setData = function(data) {
_data = data;
/* method code... */
};
SharedService.prototype.getData = function() {
return _data ;
};
return SharedService;
})();
if (typeof(window.angularSharedService) === 'undefined' || window.angularSharedService === null) {
window.angularSharedService = new SharedService();
}
return window.angularSharedService;});
angular.module("loginApp", ['sharedService'])
controller("loginCtrl",[
'SharedService', function(SharedService){
SharedService.setData(data);
}
angular.module("mainApp", ['sharedService'])
controller("someCtrl",[
'SharedService', function(SharedService){
console.log(SharedService.getData());
}
的东西是由于该应用程序是不同的我引用
<script src="sharedService.js"></script>
服务被初始化两次。当我从loginApp设置数据设置数据,但是当我查询来自mainApp的数据,它检索未定义,我怀疑这是因为该服务被再次初始化,是一个不同的共享服务实例
你为什么要把一个服务的实例放到'window'对象上?为什么把这个服务中的函数包装到一个IIFE中呢?在这种情况下,我会使用工厂,并将共享值存储在工厂中的对象中,并让一些工厂方法返回或写入值。 – C14L