AngularJS开发指南14:依赖注入
推荐两种使用场景:
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);