javascript - orderBy 无法正常工作

标签 javascript angularjs

我创建了 3 个组 - 优先级 1,2 和 3 并使用 orderBy:priorty 期望每个推送的任务都会进入它们的组。但在我使用更多数据进行测试后,我发现每个组中都有奇怪的行为,它们没有正确排序。

<input ng-model="taskName"/>
  <button ng-click="AddTask()">Push task</button>

    <li ng-repeat="task in tasks | orderBy:'priorty'">priorty {{task.priorty}} - {{task.taskName}}</li>

新项目不是被推到底部,而是有时被推到顶部/中间,为什么会发生这种情况?

试试我的演示:http://plnkr.co/edit/V5aIZcLbhiSfLy1vEWoe?p=preview

最佳答案

根据优先级,项目始终处于正确的顺序。
除此之外,对于同一优先级内的项目顺序没有任何要求(且不保证)。

如果想要进行第二级排序,您可以将属性列表传递给 orderBy 过滤器:

ng-repeat="task in tasks | orderBy:['priorty','taksName']"

另请参阅此 short demo

<小时/>

关于您提出问题的“原因”
(如果您只按“优先级”排序,为什么会发生重新排序):

它似乎是特定于浏览器的。 Firefox 上的相同代码在插入第 9 个项目后不会“重新排序”项目(Chrome 也是如此)。

<子> 如果我猜测的话,我会说这与每个浏览器保留对元素(内部)的一些引用的方式有关,并且在这一点上他们决定进行一些重新哈希。

关于javascript - orderBy 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23387956/

相关文章:

javascript - 使用 JavaScript 和 AJAX 将 OnClick 事件转变为定时事件

javascript - D3.js - 如何旋转分组条形图每个条形上的文本?

javascript - 我的案例的函数声明和函数表达式之间的区别

javascript - 将路由器参数传递给深层嵌套组件

angularjs - 使用 Firebase 注销

javascript - 如何使用 ng-model 通过 OR 操作过滤多个值?

javascript - 如何在 Firefox 中从 JavaScript 解析 HTML?(2)

angularjs - Me、AngularJS 及其指定 Controller 的 3 种不同方法

css - 单击时自定义复选框更改位置

angularjs - 更新$http返回数据到html View