在全球范围内强制 ng-strict-di 而不仅仅是在 ng-app 级别
Force ng-strict-di globally not just on an ng-app level
我正在尝试添加 ng-strict-di(以便在 DI 未正确完成 controller/directive/etc 时帮助抛出错误)。
我有一个 globalApp module
包含杂项辅助指令/httpInterceptors 等。是否可以以某种方式将其添加到那里?
我找到了这个解决方案,但是这个模块从未被引导到页面,它只是被注入到页面上的子模块中。
angular.bootstrap(document, ['globalApp'], {
strictDi: true
});
但这只是中断,因为该页面已经使用 angular.
在每个特定页面上使用 ng-app="app"
进行引导
还有什么办法可以做到这一点?
当您将 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
- 只需在使用该模块中的服务、控制器、指令等的应用程序上添加。
我正在尝试添加 ng-strict-di(以便在 DI 未正确完成 controller/directive/etc 时帮助抛出错误)。
我有一个 globalApp module
包含杂项辅助指令/httpInterceptors 等。是否可以以某种方式将其添加到那里?
我找到了这个解决方案,但是这个模块从未被引导到页面,它只是被注入到页面上的子模块中。
angular.bootstrap(document, ['globalApp'], {
strictDi: true
});
但这只是中断,因为该页面已经使用 angular.
在每个特定页面上使用ng-app="app"
进行引导
还有什么办法可以做到这一点?
当您将 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
- 只需在使用该模块中的服务、控制器、指令等的应用程序上添加。