重复依赖注入¶
ID: js/angular/repeated-dependency-injection
Kind: problem
Security severity:
Severity: warning
Precision: high
Tags:
- maintainability
- frameworks/angularjs
Query suites:
- javascript-security-and-quality.qls
AngularJS 组件可以有一个 $inject
属性,用于指定要注入的依赖项。您可以多次分配此属性,但这样做会令人困惑,因为后面的分配会覆盖之前的分配,并且实际上只注入最后一次分配中指定的依赖项。
建议¶
每个组件只指定一次依赖项。
示例¶
以下示例显示了一个 AngularJS 控制器,它的依赖项被指定了两次。
function myController($scope, $filter) {
// ...
}
myController.$inject = ["$scope", "$cookies"]; // BAD: always overridden
// ...
myController.$inject = ["$scope", "$filter"];
angular.module('myModule', []).controller('MyController', myController);
这是有问题的,因为第二次指定总是会覆盖第一次指定。
相反,依赖项应该只指定一次
function myController($scope, $filter) {
// ...
}
myController.$inject = ["$scope", "$filter"]; // GOOD: specified once
angular.module('myModule', []).controller('MyController', myController);
参考¶
AngularJS 开发人员指南:依赖注入.