Angularfire v2:有没有办法从指定的索引号开始收集?

时间:2013-12-11 20:52:39

标签: firebase angularfire

例如:

  $scope.items = $firebase(new Firebase("https://****.firebaseio.com").startAt(100).limit(100));

从Firebase中的第100个项目开始到200结束?我知道我可以使用跳过滤镜,但仍然可以加载前100个项目,如果我错了,请纠正我。

1 个答案:

答案 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非常有用。