Angularjs 使用orderBy时取消切换到ng重复数组不起作用

Angularjs 使用orderBy时取消切换到ng重复数组不起作用,angularjs,Angularjs,这是我的问题。我有一个注释列表,它使用ng repeat来显示注释数组的内容。当用户提交评论时,我不想取消移动到该数组,以便在列表顶部显示最近的评论。这非常有效,但当我将orderBy过滤器添加到repeat时,新注释将应用到repeat的底部 以下是注释数组HTML: <ul ng-repeat="comment in comments | filter:{page_id:raceID} | orderBy:'id':'reverse' track by comment.id ">

这是我的问题。我有一个注释列表,它使用ng repeat来显示注释数组的内容。当用户提交评论时,我不想取消移动到该数组,以便在列表顶部显示最近的评论。这非常有效,但当我将orderBy过滤器添加到repeat时,新注释将应用到repeat的底部

以下是注释数组HTML:

<ul ng-repeat="comment in comments | filter:{page_id:raceID} | orderBy:'id':'reverse' track by comment.id ">
    <li>{{comment.id}}</li>
    <li>{{comment.page_id}}</li>
    <li>{{comment.user_name}}</li>
    <li>{{comment.comment_copy}}</li>
</ul>
…我把汽车报废了

orderBy:'id':'reverse' 
而是使用了另一篇文章中留下的自定义文件管理器。这里是自定义函数

app.filter('reverse', function() {
  return function(items) {
    return items.slice().reverse();
  };
});
现在最新的评论仍然没有出现在页面顶部,所以我不得不从unshift改为push。这很有效。代码如下:

$scope.comment.$save(function(data) {
    $scope.comments.push($scope.comment);
}); 

这对我很有用,但我很想知道它是如何影响绩效的:

更改:

track by comment.id
致:


unshift()
push()
现在都应该可以工作了,但同样,不确定这会在多大程度上减慢DOM的重新生成速度。

在您最初的帖子中,有几点是错误的:

  • orderBy:'id':'reverse'
    应该是
    orderBy:'id':reverse
    ,其中
    reverse
    是一个布尔值(因此可以用作用域中可用的变量替换,或者用硬编码的true/false替换)。目前,它默认为
    undefined
    ,并被解释为
    false
  • 在控制器代码中,未分配字段
    注释
    id
    。它将默认为
    undefined
    ,这就是排序不能按预期工作的原因
  • 此外:

  • 如果您纠正了上述错误,并且调用了
    orderBy
    函数,则数组
    unshift
    push
    将不会对您的用例产生影响
  • 根据我在Angular 1.5.8中的经验,
    track by$index
    实际上阻止了
    orderBy
    函数的工作。将其替换为要重复的对象上的唯一标识符,即
    按注释跟踪。首选id
    。就性能而言,它们应该是类似的。不过,不使用
    track by
    子句是最慢的选择。()

  • 过滤前的排序是否会产生影响?问题仍然存在,取消移动到阵列将显示在底部。还有其他想法吗?我已经在下面发布了我自己问题的答案,我刚刚创建了一个自定义过滤器,它可以反转数组,而不是使用angular内置的orderBy。一切如期进行。如果你有任何其他建议,请告诉我,我会试试。太好了。谢谢你回复。
    track by comment.id
    
    track by $index