我使用 firebase 保存具有以下数据的帖子:
createdAt: "Sun Apr 03 2016 18:32:46 GMT-0300 (BRT)"
我想要实现的是首先获取最新的帖子,然后在用户向下滚动时加载较旧的帖子。
通过使用 ngInfiniteScroll 检索帖子,我可以使用 <div ng-repeat="post in posts | orderBy:'-createdAt'">
订购 desc但 ngInfiniteScroll 始终首先返回旧帖子。我正在订购,但我订购的是较旧的。
我已经尝试在 ngInfiniteScroll 中使用相同的逻辑( "-createdAt"
),但它没有效果。
我的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
}
}
}
最佳答案
看起来您找到了解决方案,但您使用 orderBy
的管道处于正确的轨道上,但只需尝试稍微调整一下即可。尝试使用 orderBy:'+':true"
,其中 orderBy
表示您想按某些内容排序,而 +:true
表示顺序它的任何新内容都在顶部,其中 -:true
表示在底部订购新内容。但是您可以查看它的 Angular 文档 here 。所以如果在 HTML 端处理它它看起来像这样 ng-repeat="post in posts| orderBy:'+':true"
或:
<div ng-repeat="post in posts| orderBy:'+':true">
[....post info here]
</div>
但是尝试一下,希望它有帮助。
关于angularjs - 如何让 ngInfiniteScroll 通过createdAt 降序检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36391667/