如何在angularjs中为每个控制器注入一个独特的模块

How to inject a unique module for each controller in angularjs

本文关键字:一个 模块 控制器 angularjs 注入      更新时间:2023-09-26

与$scope一样,它独立于每个控制器。是否存在为每个控制器创建独立模块的方法?

angular.module('mymodule', []).service('mymodule', function () {});
angular.module('myapp', ['mymodule'])
.controller('myController2', function($scope, mymodule) {
    console.log(
      $scope.hello,   // undefined
      mymodule.hello, // "world"
      s === $scope,   // false
      m === mymodule  // true
    );
})
.controller('myController', function($scope, mymodule) {
    s = $scope;
    m = mymodule;
    $scope.hello = "world";
    mymodule.hello = "world";
});

http://jsbin.com/qazeju/2/edit?js,控制台

我试过工厂和供应商。

我不知道如何将一个独立的实例注入每个控制器,但您可以用一个函数来定义您的服务,以创建一个实例并从每个控制器调用该函数。

angular.module('mymodule', []).service('mymodule', function () {
  return {
    createMyService: function(){
      return {
        hello: 'hello world'
      };
    }
  };
});

为什么要使用带有DI的单个模块?这有点棘手,但我认为这是可能的,使用assetBuilder并注入结果。。。