推荐两种使用场景:
1、控制器中的依赖注入
控制器是负责应用行为的类。推荐的控制器声明方法如下:
var MyController = function(dep1, dep2) {
...
}
MyController.$inject = ['dep1', 'dep2']; MyController.prototype.aMethod = function() {
...
}
2、工场方法
工场方法负责创建AngularJS中的大部分对象。比如指令,服务,过滤器。工厂方法一般在模块中使用,推荐的方法如下:
angualar.module('myModule', []).
config(['depProvider', function(depProvider){
...
}]).
factory('serviceId', ['depService', function(depService) {
...
}]).
directive('directiveName', ['depService', function(depService) {
...
}]).
filter('filterName', ['depService', function(depService) {
...
}]).
run(['depService', function(depService) {
...
}]);
3、其它
依赖能在需要时被导入:
function SomeClass(greeter) {
this.greeter = greeter
} SomeClass.prototype.doSomething = function(name) {
this.greeter.greet(name);
}
AngularJS注入器使用示例:
行内标记
someModule.factory('greeter', ['$window', function(renamed$window) {
...;
}]);
若使用$inject会导致代码膨胀:
var greeterFactory = function(renamed$window) {
...;
}; greeterFactory.$inject = ['$window']; someModule.factory('greeter', greeterFactory);