AngularJS:从Firebase获取用于分页的记录
AngularJS : Fetch records for pagination from Firebase
我正在尝试使用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的下一组数据。任何帮助都将不胜感激。。。
Firebase中没有偏移函数,当您开始探索实时、协作方面时,这是有意义的(偏移在流动数据集中没有实际意义)。
你的具体问题的答案其实和听起来一样简单。该算法是一种基本的光标策略,看起来像这样:
- 从当前数据集中查找最后一个键
- 使用startAt和limit获取下一个集合(页数加一)
- 丢弃第一个密钥
- 将数据应用于$scope
这看起来像以下内容:
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-reeat中筛选出第一个项目。
另外,看看这个jsfiddle,它显示了一个简单的分页类。
相关文章:
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 如何通过引用var Using DataTables来进行分页或排序
- 使用CSS或JavaScript计算分页符的数量
- DataTables-创建自定义分页样式(加载更多样式)
- 使用ajax的服务器端分页&jQuery
- 分页:如何用AJAX加载第一个页面
- dataTables-如何自定义分页类型以显示最后一个页码后面的省略号,
- 不带jquery的全屏分页
- DataTable没有显示分页按钮和记录信息-JQuery
- $http请求在一个请求中返回所有记录而不分页
- AngularJS:从Firebase获取用于分页的记录
- 从 MySQL 数据库对记录进行分页
- 使用jquery插件进行分页,当加载50k时记录导致整个系统冻结.如何解决这个问题
- 内联分页记录与PHP JQUERY AJAX JSON
- 如何获得Primefaces数据表当前页面上的总记录(通过YUI分页器)
- 根据记录的数量显示分页
- 移动数据表中分页旁边的每页记录
- 使用django-el-pagination(延迟分页)保存浏览器历史记录
- 每页分页记录
- 角度分页:当记录从第一页删除时,下一页的记录不会在第一页自动重新填充