角度从本地json文件启用分页

时间:2016-11-26 01:03:30

标签: angularjs json

我正在尝试设置一项服务,当我感觉到它时,我可以翻转来自API的实时数据。 getData函数使用skip / take参数来定义开始记录和记录数。

我的数据目前位于json文件中:

{
    "Data":[{
        "Id":"1462",
        "Name":"Cynthia"

    },{
        "Id":"1463",
        "Name":"Bob"
    },{
        ...
    }],
    "Total":71
}

我的服务目前同时提取所有json数据:

    var _getData = function (optionsData) {
        return $http({
          method: 'GET',
          url: 'data/packages.json'
        })
        .then(function successCallback(response) {
            return response;
        },
            function errorCallback(response) {
            return response;
        });
    }

在我看来,我必须将分页逻辑直接写入服务:

        .then(function successCallback(response) {
            var records = response.data.Data;
            var firstRecord = 0;//optionsData.skip;
            var numberOfRecords = 1;//optionsData.take;
            response.data.Data = records.slice(firstRecord, firstRecord + numberOfRecords);
            return response;
        },

原则上这是正确的方法吗?

[更新]控制器方法:

     var getPackageData = function (options){
        return dataService.getData(options.data).then(
            function successCallback(response) {
                options.success(response.data.Data);
                $scope.totalCount = response.data.Total;
            },
            function errorCallback(response) {
                // handle error
            }
        );
    };

1 个答案:

答案 0 :(得分:0)

  

我的errorCallback错了?怎么样?

errorCallback 转换 已拒绝的承诺已履行承诺。

要避免转换,请throw回复或return $q.reject

var _getData = function (optionsData) {
    return $http({
      method: 'GET',
      url: 'data/packages.json'
    })
    .then(function successCallback(response) {
        return response;
    },
        function errorCallback(response) {
        //To avoid converting reject to success
        //DON'T
        //return response;
        //INSTEAD
        throw response;
        //OR
        //return $q.reject(response);
    });
}

另一个常见错误是无法包含throwreturn语句。当函数省略return语句时,该函数返回值undefined。在这种情况下,$q服务将转换拒绝承诺,以履行承诺,产生的值为undefined