我正在尝试使用AngularJS和Firebase作为后端来实现分页。我正在使用以下代码从firebase url中获取数据:
var firebaseObj = new Firebase("<firebaseUrl>.com/Details/");
var sync = $firebase(firebaseObj.startAt($scope.username).endAt($scope.username).limitToFirst(5));
$scope.articles = sync.$asArray();
上面的查询给出了前5个记录,它们以特定的username
开头和结尾。现在,如何从索引6到10获取下一组数据。
任何帮助将不胜感激......
答案 0 :(得分:4)
Firebase中没有偏移功能,当您开始了解实时协作方面时,这是有意义的(偏移在流体数据集中没有实际意义)。
您的具体问题的答案实际上就像听起来一样简单。该算法是一种基本的游标策略,看起来像这样:
这看起来像下面这样:
function getLastKey(obj) {
return Object.keys(obj).pop();
}
function nextPage() {
var lastKey = Object.keys($scope.articles);
// stop listening to the old data
$scope.articles.$destroy();
var ref = firebaseObj.orderByKey()
.startAt(lastKey)
// 5 + 1 to account for the lastKey being in the results
.limitToFirst(6);
// sync to the new results
$scope.articles = $firebase(ref).$asArray();
}
在实践中,要在Angular中优雅地进行分页,还有很多工作要做。
最明显的是我们需要有一些方法来跳过第一条记录。据推测,我们知道页码,因此可以使用自定义过滤功能从ng-repeat中过滤掉第一项。