我有这个功能,我在顶部称为loadAll()
。
function loadAll() {
UniversalService.GetAll()
.then(function (a) {
$scope.all = a;
});
}
当我在我的html中使用它时,我得到了正确的信息,但我稍后需要在我的控制器中对这些值进行分页,所以我称之为// get current page of items
$scope.items = $scope.all.slice(vm.pager.startIndex, vm.pager.endIndex + 1);
但我没有得到任何价值。
答案 0 :(得分:1)
您可以在此承诺解决之前致电此事吗? 在已解决的承诺中添加此内容可能是您的解决方案。
function loadAll() {
UniversalService.GetAll()
.then(function (a) {
$scope.all = a;
$scope.items = $scope.all.slice(vm.pager.startIndex, vm.pager.endIndex + 1);
});
}
如果您不更改此功能,请使用回调:
function loadAll(callback) {
UniversalService.GetAll()
.then(function (a) {
$scope.all = a;
if (callback) {
callback();
}
});
}
并称之为:
loadAll(function() {
$scope.items = $scope.all.slice(vm.pager.startIndex, vm.pager.endIndex + 1);
});
答案 1 :(得分:1)
是否有可能以其他方式解决承诺?我无法在
$scope.items = $scope.all.slice(vm.pager.startIndex, vm.pager.endIndex + 1);
函数中调用loadAll()
,因为此行用于另一个函数
从UniversalService.GetAll()
返回承诺:
function loadAll() {
var promise = UniversalService.GetAll();
promise.then(function (all) {
$scope.all = all;
});
//RETURN promise
return promise;
}
然后在另一个函数中使用该promise:
var loadAllPromise = loadAll();
function another(loadAllPromise) {
loadAllPromise.then(function(all) {
$scope.items = all.slice(vm.pager.startIndex, vm.pager.endIndex + 1);
});
}