我正在尝试设置一项服务,当我感觉到它时,我可以翻转来自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
}
);
};
答案 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);
});
}
另一个常见错误是无法包含throw
或return
语句。当函数省略return语句时,该函数返回值undefined
。在这种情况下,$q
服务将转换拒绝承诺,以履行承诺,产生的值为undefined
。