强制ng-strict-di全球不仅仅是在ng-app级别

时间:2015-02-19 15:53:12

标签: javascript angularjs dependency-injection

我试图添加ng-strict-di(以便在控制器/指令/等正确完成DI时帮助抛出错误)。

我有一个globalApp module包含各种辅助指令/ httpInterceptors等。是否有可能以某种方式添加它?

我找到了这个解决方案,但是这个模块永远不会被引导到页面,它只是被注入页面上的子模块

angular.bootstrap(document, ['globalApp'], {
   strictDi: true
});

但这简直就是打破了,因为页面已经使用angular在每个特定页面上使用ng-app="app"进行自举。

如何才能实现这一目标?

1 个答案:

答案 0 :(得分:2)

当您向应用添加ng-strict-di时,它会强制显式注释所有应用的依赖项(使用中)。

所以,如果你有:

<body ng-app="app">
  <foo></foo>
</body>

在另一个模块中定义了foo且没有明确的注释:

anotherModule.directive("foo", function(){
  return {
    template: "{{foo}}",
    controller: function($scope){
      $scope.foo = "foo"; // $scope is not explicitly annotated
    }
  };
});

然后这会引发错误。

换句话说,您不需要为每个模块添加ng-strict-di - 仅在使用该模块中的服务,控制器,指令等的应用程序上。