我在简单的ng-repeat中使用了$ index来显示项目编号:
<li ng-repeat="item in dataList | limitTo:5">
<span>{{ $index + 1 }} </span>
</li>
它长时间工作正常。
但几天前我突然开始接受:
Error: Error while interpolating: {{ $index + 1 }} illegal access
at Error (native)
at Object.k (/vendors/angular/angular.min.js:55:287)
at Object.e.$digest (/vendors/angular/angular.min.js:90:233)
at Object.e.$apply (/vendors/angular/angular.min.js:92:431)
at Object.<anonymous> (/js/controllers/HomePage.js:99:28)
at l (/vendors/jquery/jquery.min.js:4:24797)
at Object.c.fireWith [as resolveWith] (/vendors/jquery/jquery.min.js:4:25618)
at k (/vendors/jquery/jquery.min.js:6:5201)
at XMLHttpRequest.<anonymous> (/vendors/jquery/jquery.min.js:6:9005)
在生产和当地环境中。
dataList
中的数据是正确的,与之前的数据相同。
只有最新的Chrome(32.0.1700.14)才能在其他浏览器中重现它仍然正常工作。
为什么会发生这种情况以及如何解决这个问题?
Angular版本:1.1.5。
答案 0 :(得分:1)
调试显示在本机添加操作上从angular.js:6371抛出异常,并且它与AngularJS本身无关。
对于那些遇到同样问题的人来说,看起来唯一的解决方案就是找到任何替代方法来实现失败的任务。至少要等到下一次谷歌Chrome更新。
感谢@Heikki指向chromium issues tracker。
答案 1 :(得分:1)
由于该bug与String + Number连接有关,我在数字上使用toString()作为临时解决方法。
{{($index + 1).toString()}}
在我的案例中工作。