Page 171 - AngularJS权威教程
P. 171

15.18 设置 Restangular   151


                    布尔型                                                                             1
                  如果参数值为true,所有的资源都会被当作孤立资源处理,没有任何URL会进行嵌套。

                    数组                                                                              2
                  只有定义在这个数组中的资源会当作孤立资源处理,数组的元素是字符串,字符串的值是资
              源的标识。                                                                                  3

                  8. 使用超媒体
                                                                                                     4
                  在实践中,只通过一个切入点(主URL)来同后端服务器进行通信是非常好的做法,其他数
              据模型通过链接来指向相关联的资源。
                                                                                                     5
                  Restangular通过selfLink、oneUrl和allUrl来支持这个有用的做法。
                  首先要设置selfLink字段。同设置ID非常类似,selfLink将路径设置为数据模型的一个属
                                                                                                     6
              性,而数据模型通过链接同对应的资源相关联。这样我们可以知道应该将PUT或GET请求发送到哪
              个URL。
                                                                                                     7
                  angular.module('myApp', ['restangular'])
                      .config(function(RestangularProvider) {
                          RestangularProvider.setRestangularFields({                                 8
                              selfLink: 'link.href'
                          });
                      });
                                                                                                     9
                  设置好后,就可以开始使用这个非常有用的功能了。

                  首先读取所有作者的列表,这也是应用的主路由。                                                             10

                  $scope.authors = Restangular.all('authors').getList().$object;
                  基于前面的设置,每一个作者都对应一个指向自己的链接,同样还有一个指向该作者对应的                                           11
              书籍的URL。可以像下面这样使用这些属性:
                                                                                                     12
                  var firstAuthor = authors[0];
                  firstAuthor.name="John";

                  // PUT到/authors/1988-author-1                                                      13
                  // url在firstAuthor.link.href中
                  firstAuthor.put();
                                                                                                     14
                  // GET到/books/for-author/1988-author-1
                  var books = Restangular.allUrl('books', firstAuthor.books.href)
                      .getList().$object;
                                                                                                     15
                  9. 自定义Restangular服务

                  最后,强烈建议将Restangular封装在一个自定义服务对象内。这样做非常有用,因为在每个                                     16
              自定义服务中都可以对Restangular进行独立的设置。通过使用服务可以将同服务器通信的逻辑与
              AngularJS对象解耦,并让服务直接处理通信的业务。
                                                                                                     17
                  AngularJS对象内部的解耦同样对测试非常有帮助,因为我们在测试时模拟后端请求的返回
              数据,而无需担心会真的向后端发送请求。
                                                                                                     18
   166   167   168   169   170   171   172   173   174   175   176