依赖不匹配¶
ID: js/angular/dependency-injection-mismatch
Kind: problem
Security severity:
Severity: warning
Precision: very-high
Tags:
- correctness
- maintainability
- frameworks/angularjs
Query suites:
- javascript-security-and-quality.qls
AngularJS 内置支持依赖注入:指令可以简单地列出它们依赖的服务,AngularJS 将提供适当的实例并在运行时将它们作为参数传递。
开发人员必须确保依赖项列表与指令工厂函数的参数列表匹配:如果缺少依赖项,将不会注入任何服务实例,并且相应的参数将默认为 `undefined`。如果依赖项及其相应参数具有不同的名称,这会使代码难以理解,甚至可能表明存在错误。
建议¶
确保声明的依赖项和参数匹配。
示例¶
以下示例指令声明了对 `$compile` 服务的单个依赖项,但其工厂函数有两个参数 `$compile` 和 `$http`。可以推测,第二个参数是在没有添加相应依赖项的情况下引入的,因此服务将无法正确注入。
angular.module('myapp')
.directive('mydirective', [ '$compile', function($compile, $http) {
// ...
}]);
要解决此问题,必须将 `$http` 服务也列为依赖项
angular.module('myapp')
.directive('mydirective', [ '$compile', '$http', function($compile, $http) {
// ...
}]);
参考¶
AngularJS 开发者指南: 依赖注入.