例如:
$scope.items = $firebase(new Firebase("https://****.firebaseio.com").startAt(100).limit(100));
从Firebase中的第100个项目开始到200结束?我知道我可以使用跳过滤镜,但仍然可以加载前100个项目,如果我错了,请纠正我。
答案 0 :(得分:3)
你走在正确的轨道上。您将startAt()。limit()代码附加到Firebase参考,然后将其传递到$ firebase,如上所示。
但是,startAt方法不采用数字偏移,而是采用优先级和可选的记录ID(密钥)。
因此,如果您放置startAt(100),尝试在记录100之后启动,则需要使用记录ID,或者将记录按100的组进行优先排序。
对于背景,here's a simple paginator您可以查看并窃取其中的想法。示例的核心在nextPage中,它使用之前的记录ID调用startAt,如下所示:
var lastKey = null; // page 0
this.ref.startAt(null, lastKey)
.limit(this.limit + (lastKey? 1 : 0))
.once('value', /* callback to process data goes here */));
<强>更新强>
另一个有用的注意事项是angularFire返回的记录包含它们作为$id
的唯一ID,这对于确定最后一个迭代项的id非常有用。