AngularJS:orderBy筛选器无法反转表行的顺序

AngularJS:orderBy筛选器无法反转表行的顺序,angularjs,datatable,angularjs-ng-repeat,html-table,angularjs-orderby,Angularjs,Datatable,Angularjs Ng Repeat,Html Table,Angularjs Orderby,我正在编写一个web应用程序,允许用户发布到服务器,前端显示所有帖子。但是,当用户添加一篇文章时,它会首先进入所有文章的底部。我想把最新的帖子放到所有帖子的顶端 我尝试使用: ng-repeat="post in posts | orderBy:'-'" 及 这是我的表格代码: <div ng-repeat="post in posts | orderBy:'-'"> <table> <

我正在编写一个web应用程序,允许用户发布到服务器,前端显示所有帖子。但是,当用户添加一篇文章时,它会首先进入所有文章的底部。我想把最新的帖子放到所有帖子的顶端

我尝试使用:

ng-repeat="post in posts | orderBy:'-'"

这是我的表格代码:

         <div ng-repeat="post in posts | orderBy:'-'">
              <table>
                <tr>
                  <td>{{$index}}</td>

                  <td>{{post.username}}</td>

                  <td>{{post.title}}</td>

                  <td>{{post.content}}</td>

                  <td>{{post.comment}}</td>
                </tr>
              </table>
          </div>

{{$index}}
{{post.username}
{{post.title}
{{post.content}
{{post.comment}}

然而,这两种方法都不起作用。还有其他方法吗?

您可以根据它们在未排序的
帖子中的位置对它们进行排序。您可以使用如下函数执行此操作:

$scope.newestFirst = function(post) {
    return -$scope.posts.indexOf(post);
}
然后在HTML中:

这是一个例子。使用
newestFirst
排序,新帖子将添加到列表的顶部


您会注意到,即使更改帖子的顺序,索引列也保持不变。似乎
$index
以当前排序给出了每个帖子的索引。按
$index排序
仍然可以按源数组中的索引对帖子进行排序,但按一串乱码排序会产生相同的结果,因此我认为这是巧合。

必须按对象上的属性排序<代码>
这很好,但索引号在您的小提琴中会发生变化。我在找一些索引号与帖子保持一致的东西。正如较低的索引号会出现在@asterism页面底部一样,出于上述原因,我认为使用
$index
是不可能的,但您也可以很容易地将其替换为返回该帖子原始索引的函数,例如fiddle中的
oldestFirst
函数@axcThis很棒,但问题是:当用户名都相同或内容都相同时,为什么它会按奇怪的顺序排序?当该字段中没有任何内容(空白)时,它也会按奇怪的(似乎是随机的)顺序排序@星号不确定,我还没能重现这个。从我可以看出,当值相同时,它似乎使用原始索引作为次要排序,并考虑未定义的值“大于字符串或整数”,并将它们最后列出。axcTo复制我所说的bug,将其中一个字段留空,然后按该字段@asterism排序
$scope.newestFirst = function(post) {
    return -$scope.posts.indexOf(post);
}