订单不能正常工作

时间:2014-04-30 12:21:28

标签: javascript angularjs

我创建了3组 - 第1组和第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

1 个答案:

答案 0 :(得分:1)

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

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

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

另请参阅此 short demo


关于&#34;为什么&#34;你的问题
(如果您只按优先顺序排序,为什么会重新订购)

它似乎是特定于浏览器的。 Firefox上的相同代码不会重新排序&#34;插入第9项后的项目(与Chrome一样)。

<子> 如果我猜测一下,我说它与每个浏览器保持对元素的引用(内部)的方式有关,并且在那时它们决定进行一些重复。