【发布时间】:2015-04-29 14:00:55
【问题描述】:
我一直在尝试使用多个查询参数(用于简单的分页)执行 Restangular GET,但这似乎是不可能的——至少对于我正在尝试做的事情。这是我正在尝试做的事情:
Restangular.all('elevation').get({ pageParam: page, pageSizeParam: pageSize }).then(function(data) {
console.log(data);
});
预期的响应类似于:
{ totalRecords: 233, elevations: {...} }
这不起作用并导致以下结果:
GET http://localhost:24287/elevation/[object%20Object] 404(未找到)
我也尝试使用customGET,这会导致与上述相同的问题。
我实际上能够传递多个查询参数的唯一方法是使用getList。不幸的是,当使用getList 时,会引发以下错误:
错误:getList 的响应应该是一个数组,而不是一个对象或其他东西
要解决此问题,Restangular 文档在 My response is actually wrapped with some metadata. How do I get the data in that case? 部分中指出我需要使用 addResponseInterceptor,我已经这样做了:
RestangularProvider.addResponseInterceptor(function(data, operation, what, url, response, deferred) {
var newResponse = [];
if(response.data.totalRecords !== undefined) {
newResponse.elevationData= {};
newResponse.elevationData.totalRecords = response.data.totalRecords;
newResponse.elevationData.elevations = response.data.elevations;
}
return newResponse;
});
这个复杂的解决方案确实有效。难道没有更简单的方法可以简单地使用多个查询参数调用 Restangular 的 get 并返回一个对象吗?
此时,将 Restangular 排除在外并像这样简单地使用 $http 服务会容易得多:
$http.get('http://localhost:24287/elevation?page=' + page + '&pageSize=' + pageSize).then(function(result) {
console.log(result.data.totalRecords);
console.log(result.data.elevations);
});
虽然我真的很想用 Restangular 找到更好的方法。
任何想法将不胜感激!谢谢!
【问题讨论】:
-
这对ng-newsletter.com/posts/restangular.html@页面的按钮有帮助吗?
-
感谢您的链接,尽管它看起来与文档基本相同,但有更好的示例:)。
-
对不起,我试过了...我停止使用restangular并开始使用angulars原生工具,因为它们似乎有更好的文档记录。
-
同意——我自己很快就会朝那个方向前进。它似乎更容易工作。
标签: angularjs restangular