Page 168 - AngularJS权威教程
P. 168
148 第 15 章 同外界通信:XHR 和服务器通信
将RestangularProvider注入到config()函数中,或者将Restangular注入到一个run()函
数中,用这些方式对Restangular进行设置,无论在哪里使用Restangular都可以利用这些设置。
一个决定在何处设置Restangular实例的好方法:如果设置Restangular时需要用到其
他服务,那么就在run()方法中设置,否则就在config()中进行设置。
1. 设置 baseUrl
通过setBaseUrl()方法给所有后端 API 请求设置 baseUrl。例如,如果 API 的地址是
/api/vi 而不是服务器的根路径,可以进行如下设置:
angular.module('myApp', ['restangular'])
.config(function(RestangularProvider) {
RestangularProvider.setBaseUrl('/api/v1');
});
2. 添加元素转换
Restangular加载了资源之后,我们可以添加资源转换器。
使用elementTransformers可以在Restangular对象被加载后为其添加自定义方法。
这个方法会在资源被加载后当作回调函数调用,在AngularJS对象中使用这些资源前可以对
资源对象进行更新或修改。
angular.module('myApp', ['restangular'])
.config(function(RestangularProvider) {
// 3个参数:
// route
// 如果它是一个集合——布尔值(true/false)或者
// 如果你需要这两个选项以及变换器
// 则不发送
RestangularProvider.addElementTransformer('authors', false, function(element) {
element.fetchedAt = new Date();
return element;
});
});
对于扩展数据模型或集合有跨界方法可以使用。例如,如果我们只想更新authors资源,可
以用如下方法:
angular.module('myApp', ['restangular'])
.config(function(RestangularProvider) {
// 3个参数:
// route
// 如果它是一个集合——布尔值(true/false)或者
// 如果你需要这两个选项以及变换器
// 则不发送
RestangularProvider.extendModel('authors', function(element) {
element.getFullName = function() {
return element.name + ' ' + element.lastName;
};
return element;
});
});