restangular 控制器中的 addResponseInterceptor
addResponseInterceptor in restangular controller
我是 AngularJS 的新手,我正在尝试使用 restangular 来调用我的服务器 Rest API 那 returns 我这个 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":{}}
根据我在文档中阅读的内容,我需要在 config
中设置 addResponseInterceptor
以从我的 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
(或者:我如何在我的控制器中提取特定数组)?
这不是使用 responseInterceptor
的常用方法,您应该在拦截器中做一些通用的事情,比如您希望在每个响应中放置的一些属性。
为了提取特定的响应,您应该始终在您的 then 块中使用 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;
});
});
我是 AngularJS 的新手,我正在尝试使用 restangular 来调用我的服务器 Rest API 那 returns 我这个 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":{}}
根据我在文档中阅读的内容,我需要在 config
中设置 addResponseInterceptor
以从我的 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
(或者:我如何在我的控制器中提取特定数组)?
这不是使用 responseInterceptor
的常用方法,您应该在拦截器中做一些通用的事情,比如您希望在每个响应中放置的一些属性。
为了提取特定的响应,您应该始终在您的 then 块中使用 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;
});
});