按钮在ngRepeat中工作不正常

时间:2015-09-03 12:13:56

标签: angularjs angular-material

问题是当我点击ngRepeat中生成的按钮时,其行为是不可预测的。它可以在第一次点击或第五次响应。最稳定的行为是双击反应。

我已在this Plunker完全复制了我项目的问题部分。

在Chrome,Firefox和Edge中检查问题的结果相同。

我的猜测是由Angular生成范围引起的问题...但我对Angular很新,并且在整整一周内没有成功解决这个问题。所以,请问有人可以帮忙吗? :)

Result

2 个答案:

答案 0 :(得分:1)

问题出在这一行:

 <tr ng-repeat="student in task | groupBy: 'studentId' | toArray: true | orderBy: orderByName">

toArray: true/false导致问题

解决方案是添加track by $index,如:

 <tr ng-repeat="student in task | 
                      groupBy: 'studentId' | 
                      toArray: true |
                      orderBy: orderByName track by $index" >

工作 Plunker

问候@Mike回答... I believe the code is too slow.索引跟踪应改善应用。性能,因为你添加索引而不是角度(太贵)

答案 1 :(得分:1)

与Maxim的回答一起,我认为代码太慢了。 当您绑定到函数而不是范围变量时,此函数可以比您想象的更频繁地执行。有时最好预先格式化数据,在对象上创建一个新属性,然后绑定到该对象。

我将记录语句添加到attendanceStatus,当我单击一个按钮时,似乎该函数被调用了一千次。