我对AngularJS很新,我试图使用restangular来调用我的服务器Rest API,它返回给我这个json:
{"Users":[{"AN01_ID":1,"AN01_NAME":"cust1","AN01_REF":1,"AN01_ALT":4},{"AN01_ID":2,"AN01_NAME":"cust2","AN01_REF":2,"AN01_ALT":3},{"AN01_ID":3,"AN01_NAME":"cust3","AN01_REF":3,"AN01_ALT":2},{"AN01_ID":4,"AN01_NAME":"cust4","AN01_REF":4,"AN01_ALT":1}],"ResponseStatus":{}}
从我在文档中读到的内容我需要在addResponseInterceptor
中设置config
以从我的json响应中提取我需要的数组,如下所示:
var app = angular.module('testApp', ['restangular']);
app.config(function(RestangularProvider) {
RestangularProvider.setBaseUrl('http://myserver/api/');
RestangularProvider.addResponseInterceptor(function(data, operation, what, url, response, deferred) {
return data.Users;
});
});
app.controller('usersController', function($scope, Restangular) {
$scope.users = Restangular.all('users.json').getList().$object;
});
我的问题是:如果我需要为每个控制器指定不同的阵列名称,如何在控制器中定义addResponseInterceptor
(或者我如何在控制器中提取特定阵列?)
答案 0 :(得分:1)
这不是使用responseInterceptor
的常用方法,你应该在拦截器中做一些通用的事情,比如你想要放置每个响应的某个属性。
为了提取特定的响应,你应该总是使用promise回调并解决你的块中的响应,所以这应该是你的代码。
var app = angular.module('testApp', ['restangular']);
app.config(function(RestangularProvider) {
RestangularProvider.setBaseUrl('http://myserver/api/');
// remove this part of the code as you do not need it
});
app.controller('usersController', function($scope, Restangular) {
Restangular.all('users.json').getList().then(function(response){
$scope.users = response.Users;
});
});