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
   126   127   128   129   130   131   132   133   134   135   136