Page 141 - AngularJS权威教程
P. 141

14.3  创建服务时的设置项    121


                  在上面的例子中, provider()方法在文本githubService后添加Provider生成了一个新的提                           1
              供者,githubServiceProvider可以被注入到config()函数中。

                  angular.module('myApp', [])                                                        2
                  .config(function(githubServiceProvider) {
                      githubServiceProvider.setGithubUrl("git@github.com");
                  });
                                                                                                     3
                  如果希望在config()函数中可以对服务进行配置,必须用provider()来定义服务。
                  provider()方法为服务注册提供者。可以接受两个参数。                                                     4
                   name(字符串)
                                                                                                     5
                  name参数在providerCache中是注册的名字。 name+Provider会成为服务的提供者。同时name
              也是服务实例的名字。
                  例如,如果定义了一个githubService,那它的提供者就是githubServiceProvider。                             6

                   aProvider(对象/函数/数组)
                                                                                                     7
                  aProvider可以是多种形式。

                  如果aProvider是函数,那么它会通过依赖注入被调用,并且负责通过$get方法返回一个                                      8
              对象。

                  如果aProvider是数组,会被当做一个带有行内依赖注入声明的函数来处理。数组的最后一                                       9
              个元素应该是函数,可以返回一个带有$get方法的对象。

                  如果aProvider是对象,它应该带有$get方法。                                                        10
                  provider()函数返回一个已经注册的提供者实例。

                  直接使用provider() API是最原始的创建服务的方法:                                                    11

                  // 在模块对象上直接创建provider的例子
                  angular.module('myApp', [])                                                        12
                  .provider('UserService', {
                      favoriteColor: null,
                      setFavoriteColor: function(newColor) {                                         13
                          this.favoriteColor = newColor;
                      },
                      // $get函数可以接受injectables
                      $get: function($http) {                                                        14
                          return {
                              'name': 'Ari',
                              getFavoriteColor: function() {                                         15
                                  return this.favoriteColor || 'unknown';
                              }
                          };
                       }                                                                             16
                  });
                  用这个方法创建服务,必须返回一个定义有$get()函数的对象,否则会导致错误。                                            17
                  可以通过注入器来实例化服务(由于AngularJS会处理服务的实例化,我们不需要自己动手,
              更多信息请查看第24章):                                                                          18
   136   137   138   139   140   141   142   143   144   145   146