小编And*_*rea的帖子

在同一模块中多次声明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似乎始终使用服务的最新定义,而忽略了之前的定义.

我的问题是:有没有描述这种行为的官方文件?

javascript angularjs

9
推荐指数
1
解决办法
582
查看次数

标签 统计

angularjs ×1

javascript ×1