$resource 总是返回分页数据的第 1 页
$resource always returning page 1 of paginated data
问题
从我的 RESTful 接口 (Apigility) 请求分页 HAL json 的 3 页中的第 2 页时,始终返回第 1 页的结果。
我的服务器上有一个 RESTful api returns HAL json angularjs 单页应用程序 (SPA)。
在一个页面上,我实现了 angular-ui bootstrap 分页器。这是相关代码;
<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 页,它 returns 预期的结果。
我在控制器的 getData() 函数中回显了 currentPage 变量,就在发出服务器请求之前,它肯定设置为 2。
有什么想法吗?
根据 https://apigility.org/documentation/api-primer/halprimer(集合部分)HAL JSON 需要一个 "page=" 参数。
在控制器的 getData 函数中,您似乎在参数默认值 JSON 中传入了 "pageNumber="。也许这就是问题的原因?
问题 从我的 RESTful 接口 (Apigility) 请求分页 HAL json 的 3 页中的第 2 页时,始终返回第 1 页的结果。
我的服务器上有一个 RESTful api returns HAL json angularjs 单页应用程序 (SPA)。
在一个页面上,我实现了 angular-ui bootstrap 分页器。这是相关代码;
<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 页,它 returns 预期的结果。
我在控制器的 getData() 函数中回显了 currentPage 变量,就在发出服务器请求之前,它肯定设置为 2。
有什么想法吗?
根据 https://apigility.org/documentation/api-primer/halprimer(集合部分)HAL JSON 需要一个 "page=" 参数。
在控制器的 getData 函数中,您似乎在参数默认值 JSON 中传入了 "pageNumber="。也许这就是问题的原因?