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

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


1
前几天发生了什么?:) 使用未压缩的 Angular 和 jQuery 版本进行调试可能会有所帮助。 - Heikki
几天前,Google Chrome已经更新到32.0.1700.14版本 :) - he-yaeh
我无法重现,即使使用金丝雀版本v33也是如此。你能否创建一个包含此代码的 plunker? - Deividi Cavarzan
1
类似问题:https://code.google.com/p/chromium/issues/detail?id=318671 - Heikki
2个回答

1

由于错误与字符串+数字拼接相关,我在数字上使用toString()作为临时解决办法。

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

在我的情况下有效。

1

调试显示异常是由于本地添加操作在angular.js:6371中抛出,与AngularJS本身无关。

对于那些遇到相同问题的人来说,看起来唯一的解决方案就是找到任何替代方法来实现你正在失败的任务。至少直到下一个Google Chrome更新。

感谢@Heikki指向chromium issues tracker


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接