AngularJS:插值时出错:{{$ index + 1}}

时间:2013-11-14 21:45:23

标签: angularjs angularjs-ng-repeat

我在简单的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。

2 个答案:

答案 0 :(得分:1)

调试显示在本机添加操作上从angular.js:6371抛出异常,并且它与AngularJS本身无关。

对于那些遇到同样问题的人来说,看起来唯一的解决方案就是找到任何替代方法来实现失败的任务。至少要等到下一次谷歌Chrome更新。

感谢@Heikki指向chromium issues tracker

答案 1 :(得分:1)

由于该bug与String + Number连接有关,我在数字上使用toString()作为临时解决方法。

{{($index + 1).toString()}}

在我的案例中工作。