And*_*rea 9 javascript angularjs
我正在使用AngularJS 1.x,我可以在同一个模块中多次定义相同的服务.在下面的代码片段中,我nameService在模块中定义了2次服务myApp:
(function() {
'use strict';
angular
.module('myApp', [])
.controller('MainController', MainController)
.factory('nameService', nameService1)
.factory('nameService', nameService2);
MainController.$inject = ['nameService'];
function MainController(nameService) {
var vm = this;
vm.message = nameService.getName();
}
function nameService1() {
return {
getName: getName
};
function getName() {
return 'First Definition';
}
}
function nameService2() {
return {
getName: getName
};
function getName() {
return 'Second Definition';
}
}
})();
Run Code Online (Sandbox Code Playgroud)
在运行时,AngularJS将使用服务的第二个实现返回的值:"Second Definition".请查看此Plunker示例.
因此,根据经验,AngularJS似乎始终使用服务的最新定义,而忽略了之前的定义.
我的问题是:有没有描述这种行为的官方文件?
在这里,您将覆盖工厂/服务的定义。工厂/服务是单例的,即只有一个实例。
factory('name', constructing_function)
Run Code Online (Sandbox Code Playgroud)
你的情况,
factory('nameService', nameService1)//Here object { getName: getName } will be assigned to nameService instance.
factory('nameService', nameService2)//Here object { getName: getName } (#2nd definition) will be assigned to nameService instance. i.e. nameservice instance referring to (#2nd definition).
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
582 次 |
| 最近记录: |