首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使ngInfiniteScroll通过createdAt降序检索数据

如何使ngInfiniteScroll通过createdAt降序检索数据
EN

Stack Overflow用户
提问于 2016-04-03 21:52:21
回答 2查看 411关注 0票数 5

我使用firebase保存具有以下数据的帖子:

代码语言:javascript
复制
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基本上是这样的:

代码语言:javascript
复制
  var baseRef = new Firebase(FBURL).child("posts");
  var scrollRef = new Firebase.util.Scroll(baseRef, "createdAt");
  $scope.posts = $firebaseArray(scrollRef);
  $scope.posts.scroll = scrollRef.scroll;

安全和规则:

代码语言:javascript
复制
"posts": {
          ".read": true,
          ".indexOn": "createdAt",
          "$post": {
            ".read": true,
            ".write": true,
            "$other": {
               ".validate": true
            }
         }
      }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-12 21:22:43

看起来你找到了你的解决方案,但你在正确的轨道上与orderBy管道,但只是尝试调整它一点。尝试使用orderBy:'+':true",其中orderBy表示您希望通过某些东西来订购它,而+:true则表示在最上面有任何新内容的地方订购它,在那里-:true会说在底部订购新的内容。但是,您可以查找角度的文档,为它这里。因此,如果在HTML端处理它的地方看起来像这样的ng-repeat="post in posts| orderBy:'+':true"或者:

代码语言:javascript
复制
    <div ng-repeat="post in posts| orderBy:'+':true">
           [....post info here]
      </div>

但是试一试,希望它能帮上忙。

票数 2
EN

Stack Overflow用户

发布于 2016-04-07 01:29:51

在深入研究了现有的文档之后,我可以找到一个丑陋的解决这里的方法。

它基本上是使用负时间戳并正常检索createdAt (升序)。

因此,在保存数据时,我执行以下操作:

代码语言:javascript
复制
{
  createdAt: Firebase.ServerValue.TIMESTAMP,
  createdAtDesc: 0 - Date.now()
}

还在寻找更好的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36391667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档