问题 从我的RESTful接口(Apigility)请求3页分页HAL json的第2页时,总是会返回第1页的结果。
我的服务器上有一个RESTful api,它将HAL json返回到angularjs单页面应用程序(SPA)。
在页面上我实现了angular-ui bootstrap paginator。这是相关的代码;
<pagination direction-links="false" boundary-links="true" total-items="FooCtrl.totalItems" items-per-page="Footrl.itemsPerPage" ng-model="Foo.currentPage" ng-change="Foo.changePage()"></pagination>
SPA与控制器通信,看起来像;
angular.module('FooApp')
.controller('FooCtrl', ['$scope', 'FooApi', function($scope, FooApi) {
var self = this;
// Holds HalJson for use in pagination
var halJson = {};
self.currentPage;
self.numPages;
self.totalItems;
self.itemsPerPage = 25;
// List of pools that have already been created
self.foos = [];
getData();
self.changePage = function() {
getData();
}
function getData() {
return FooApi.query({"pageNumber": self.currentPage}).$promise
.then(function(_json) {
processJson(_json);
});
}
function processJson(halJson) {
self.foos = halJson._embedded.foos;
self.currentPage = halJson.page;
self.numPages = halJson.page_count;
self.totalItems = halJson.total_items;
}
}]);
控制器从服务中请求数据;
angular.module('FooApp')
.factory('FooApi', ['$resource', function($resource) {
var self = this;
var url = "www.someurl/foo/:foo_id";
return $resource( url,{"foo_id":"@foo_id"},
{
'query':{
method: 'GET',
isArray: false,
},
'update':{
method: 'PATCH',
isArray: false,
}
});
}]);
我尝试通过邮递员手动点击第2页,然后返回预期的结果。
我在控制器的getData()函数中回显了 currentPage 变量,就在发出服务器请求之前,它肯定设置为2.
有什么想法吗?
答案 0 :(得分:0)
根据https://apigility.org/documentation/api-primer/halprimer(关于集合的部分),HAL JSON需要一个“page =”参数。
在控制器的getData函数中,您似乎在paramdefaults JSON中传入“pageNumber =”。也许这就是问题的原因?