Page 161 - AngularJS权威教程
P. 161

15.12  $resource 服务   141


                   "moz-chunked-arraybuffer"(ArrayBuffer流)。                                         1
                  11. interceptor(对象)

                  拦截器属性有两个可选的方法:response或responseError。这些拦截器像普通的$http拦                               2
              截器一样,由$http请求对象调用。
                                                                                                     3
              15.12  $resource 服务
                                                                                                     4
                  我们可以将$resource服务当作自定义服务的基础。创建自定义服务给了我们对应用进行高
              度自定义的能力,可以对远程服务通信进行抽象,并且从控制器和视图中解耦出来。
                                                                                                     5
                  最后,我们强烈建议在自定义的服务对象内部使用$resource。这不仅可以将加载远程服务
              抽象成一个独立的AngularJS服务,同时将其从控制器中解耦,保证控制器的代码清洁。另外,
              还使得我们可以不必关心控制器是如何取得数据的。                                                                6

                  AngularJS对象内部的这种解耦方式同样对测试有益,因为我们可以将后端请求的结果进行
              储存和模拟,而不用担心在测试时真的会将请求发送给后端。                                                            7
                  要创建一个封装$resource的服务,需要将$resource的服务注入到我们用来封装的服务对
              象中,并像平时一样调用其中的方法。                                                                      8

                  如下所示:
                                                                                                     9
                  angular.module('myApp', ['ngResource'])
                  .factory('UserService', [
                  '$resource', function($resource) {                                                 10

                      return $resource('/api/users/:id', {
                          id: '@'
                      }, {                                                                           11
                          update: {
                              method: 'PUT'
                          }                                                                          12
                      });
                  }]);
                                                                                                     13
              $resourceAPI

                  通过$resource()方法来使用$resource服务。这个方法可以接受三个参数。                                        14

                   url(字符串)
                  我们在这里传入一个包含所有参数的,用来定位资源的参数化URL字符串模板(参数以:符                                          15
              号为前缀)。对URL中的每个参数,都可以通过它们的名字来为其赋值:
                                                                                                     16
                  $resource('/api/users/:id.:format', {
                      format: 'json',
                      id: '123'
                  });                                                                                17
                  这里需要注意,如果:之前的参数是空的(上面例子中的:id),那么URL中的这部分会被压
              缩成一个.符号。                                                                               18
   156   157   158   159   160   161   162   163   164   165   166