Page 131 - AngularJS权威教程
P. 131
13.4 $injector API 111
示例如下: 1
angular.module('myApp')
.controller('MyController', ['$scope', 'greeter', function($scope, greeter) {
2
}]);
由于需要处理的是一个字符串组成的列表,行内注入声明也可以在压缩后的代码中正常运 3
行。通常通过括号和声明数组的[]符号来使用它。
4
13.4 $injector API
在实际工作中,我们很少直接同$injector打交道,但是了解一下$injector有哪些API,可 5
以帮助我们更好地理解它是如何运作的。
6
13.4.1 annotate()
annotate()方法的返回值是一个由服务名称组成的数组,这些服务会在实例化时被注入到目 7
标函数中。annotate()方法可以帮助$injector判断哪些服务会在函数被调用时注入进去。
annotate()方法可以接受一个参数: 8
fn(函数或数组)
9
参数fn可以是一个函数,也可以是一个数组。annotate()方法返回一个数组,数组元素的
值是在调用时被注入到目标函数中的服务的名称。
10
var injector = angular.injector(['ng', 'myApp']);
injector.annotate(function($q, greeter) {});
// ['$q', 'greeter']
11
可以在Chrome的调试器中试试上面这段代码。
12
13.4.2 get()
get()方法返回一个服务的实例,可以接受一个参数: 13
name(字符串)
参数name是想要获取的实例的名称。 14
get()根据名称返回服务的一个实例。
15
13.4.3 has()
16
has()方法返回一个布尔值,在$injector能够从自己的注册列表中找到对应的服务时返回
true,否则返回false。它能接受一个参数:
17
name(字符串)
参数name是我们想在注入器的注册列表中查询的服务名称。
18