Page 170 - AngularJS权威教程
P. 170

150  第 15 章  同外界通信:XHR 和服务器通信


                  what:所请求的数据模型;
                  url:所请求的相对URL。

                 angular.module('myApp', ['restangular'])
                     .config(function(RestangularProvider) {
                         RestangularProvider.setRequestInterceptor(function(elem, operation, what) {
                             if (operation === 'put') {
                                 elem._id = undefined;
                                 return elem;
                             }
                             return elem;
                         });
                     });
                 5. 自定义字段

                 Restangular支持自定义字段,这对与非服务器通信非常有用,例如,同MongoDB数据库进行通
             信,在这种场景中id字段不会映射到真的id上,在MongoDB中id字段实际上会映射到_id.$oid上。

                 angular.module('myApp', ['restangular'])
                     .config(function(RestangularProvider) {
                         RestangularProvider.setRestangularFields({
                             id: '_id.$oid'
                         });
                     });

                 6. 通过errorInterceptors来捕获错误
                 通过设置错误拦截器可以捕获Restangular内的错误。通过errorInterceptor可以将错误信息
             在应用中进行传递。

                 如果errorInterceptor返回false,promise链就会被中断,并且我们的应用永远都不需要处
             理错误。

                 例如,此时是处理验证失败的好时机。任何请求如果返回了401,可以通过errorInterceptor
             将其捕获并将用户重定向到登录页面。

                 angular.module('myApp', ['restangular'])
                     .config(function(RestangularProvider) {
                         RestangularProvider.setErrorInterceptor(function(resp) {
                             displayError();
                             return false; // 停止promise链
                         });
                     });
                 7. 孤立资源设置

                 如果我们想加载一个没有嵌套在其他资源中的资源,可以使用setParentless设置告诉
             Restangular不要构造嵌套结构的URL。

                 angular.module('myApp', ['restangular'])
                     .config(function(RestangularProvider) {
                         RestangularProvider.setParentless(['cars']);
                     });

                 setParentless()设置函数可以接受两种不同类型的参数:
   165   166   167   168   169   170   171   172   173   174   175