我使用firebase保存具有以下数据的帖子:
createdAt: "Sun Apr 03 2016 18:32:46 GMT-0300 (BRT)"我想要实现的是先获得最新的帖子,然后在用户向下滚动时加载旧的帖子。
使用ngInfiniteScroll检索到的帖子后,我可以使用<div ng-repeat="post in posts | orderBy:'-createdAt'">订购desc,但是ngInfiniteScroll仍然会首先返回旧的帖子。我在点菜,但我点的是老的。
我已经尝试在ngInfiniteScroll中使用相同的逻辑(NgInfiniteScroll),但是它没有效果。
我的js基本上是这样的:
var baseRef = new Firebase(FBURL).child("posts");
var scrollRef = new Firebase.util.Scroll(baseRef, "createdAt");
$scope.posts = $firebaseArray(scrollRef);
$scope.posts.scroll = scrollRef.scroll;安全和规则:
"posts": {
".read": true,
".indexOn": "createdAt",
"$post": {
".read": true,
".write": true,
"$other": {
".validate": true
}
}
}发布于 2016-04-12 21:22:43
看起来你找到了你的解决方案,但你在正确的轨道上与orderBy管道,但只是尝试调整它一点。尝试使用orderBy:'+':true",其中orderBy表示您希望通过某些东西来订购它,而+:true则表示在最上面有任何新内容的地方订购它,在那里-:true会说在底部订购新的内容。但是,您可以查找角度的文档,为它这里。因此,如果在HTML端处理它的地方看起来像这样的ng-repeat="post in posts| orderBy:'+':true"或者:
<div ng-repeat="post in posts| orderBy:'+':true">
[....post info here]
</div>但是试一试,希望它能帮上忙。
发布于 2016-04-07 01:29:51
在深入研究了现有的文档之后,我可以找到一个丑陋的解决这里的方法。
它基本上是使用负时间戳并正常检索createdAt (升序)。
因此,在保存数据时,我执行以下操作:
{
createdAt: Firebase.ServerValue.TIMESTAMP,
createdAtDesc: 0 - Date.now()
}还在寻找更好的解决方案。
https://stackoverflow.com/questions/36391667
复制相似问题