我正在尝试在Ionic / Cordova移动应用程序中实现无限滚动。我的 nextBatch 变量将url保存到用户点击页面底部后需要获取的下一组对象。唯一的问题是,当我尝试在 loadMoreData()函数中访问它时,它会显示为未定义。我尝试过只使用$ rootScope来获得相同的结果。任何想法我应该如何处理这个?
谢谢!
.controller('HomeCtrl', function($scope,Model) {
var nextBatch; //holds the url of the next batch
$scope.model = []; //used in ng-repeat
//loads an array of 5 objects
Model.getAll().success(function(model){
nextBatch = model.meta.next; //for infinite scrolling
$scope.model = model.objects;
})
$scope.loadMoreData = function() {
if (nextBatch !== undefined) {
Model.getMore(nextBatch).then(function(model){
$scope.model.push(favours);
$scope.$broadcast('scroll.infiniteScrollComplete');
})
}
};
})
答案 0 :(得分:1)
以下是如何使无限滚动同步的方法。我的意思是阻止loadMore直到第一次调用(getAll完成)。
.controller('HomeCtrl', function($scope, Model, $q) {
var nextBatch; //holds the url of the next batch
$scope.model = []; //used in ng-repeat
var defer = $q.defer();
var promise = defer.promise;
//loads an array of 5 objects
Model.getAll().then(function(model){
nextBatch = model.meta.next; //for infinite scrolling
$scope.model = model.objects;
defer.resolve(model);
return defer.promise;
});
$scope.loadMoreData = function() {
promise.then(function(result){
if(nextBatch !== "END"){
Model.getMore(nextBatch).then(function(favours){
angular.forEach(favours.objects, function(item){
$scope.model.push(item);
});
nextBatch = favours.meta.next;
});
}
});
};
})