AngularJS 服务不是单例
AngularJS service is not a singleton
据我所知,所有AngularJS服务都是单例。
但是,在我的实现中,这似乎不是真的。
我正在使用 AngularJS v1.4.14
。
我创建了两个控制器,其中一个服务被注入到两个控制器中。
FooController
angular.module('fooModule').controller('FooController', [
'myService',
function (myService) {
...
}
]);
BarController
angular.module('barModule').controller('BarController', [
'myService',
function (myService) {
...
}
]);
我的服务
'use strict';
angular.module('myModule').service('myService', MyService);
function MyService() {
var initialize = function () {
console.log("INITIALIZE");
};
initialize();
}
我在日志中得到两次 INTIALIZE。
经过额外的测试,我很确定,有两个 myService
实例。每个控制器一个。
现在请记住,这来自一个旧项目,它是遗留代码,可能存在我不知道的任何配置。
你能解释一下吗?如何让我的服务成为单例?
我的代码中似乎每个模块都初始化了 Angular
angular.element(document).ready(function () {
angular.bootstrap(document.getElementById('foo'), ['fooModule']);
});
angular.element(document).ready(function () {
angular.bootstrap(document.getElementById('bar'), ['barModule']);
});
我将其更改为对所有模块进行单一 angular 初始化
angular.element(document).ready(function () {
angular.bootstrap(document, ['fooModule', 'barModule']);
});
现在,注入不同控制器的服务确实表现为单例
据我所知,所有AngularJS服务都是单例。
但是,在我的实现中,这似乎不是真的。
我正在使用 AngularJS v1.4.14
。
我创建了两个控制器,其中一个服务被注入到两个控制器中。
FooController
angular.module('fooModule').controller('FooController', [
'myService',
function (myService) {
...
}
]);
BarController
angular.module('barModule').controller('BarController', [
'myService',
function (myService) {
...
}
]);
我的服务
'use strict';
angular.module('myModule').service('myService', MyService);
function MyService() {
var initialize = function () {
console.log("INITIALIZE");
};
initialize();
}
我在日志中得到两次 INTIALIZE。
经过额外的测试,我很确定,有两个 myService
实例。每个控制器一个。
现在请记住,这来自一个旧项目,它是遗留代码,可能存在我不知道的任何配置。
你能解释一下吗?如何让我的服务成为单例?
我的代码中似乎每个模块都初始化了 Angular
angular.element(document).ready(function () {
angular.bootstrap(document.getElementById('foo'), ['fooModule']);
});
angular.element(document).ready(function () {
angular.bootstrap(document.getElementById('bar'), ['barModule']);
});
我将其更改为对所有模块进行单一 angular 初始化
angular.element(document).ready(function () {
angular.bootstrap(document, ['fooModule', 'barModule']);
});
现在,注入不同控制器的服务确实表现为单例