$ resource始终返回分页数据的第1页

时间:2015-10-14 12:40:10

标签: angularjs angular-ui-bootstrap

问题 从我的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.

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

根据https://apigility.org/documentation/api-primer/halprimer(关于集合的部分),HAL JSON需要一个“page =”参数。

在控制器的getData函数中,您似乎在paramdefaults JSON中传入“pageNumber =”。也许这就是问题的原因?