2013-11-14 3 views
3

Я использовал $ индекс внутри простой нг-повтор, чтобы показать количество предметов:

<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) в других браузерах, которые все еще работают правильно.

Любые идеи, почему это может произойти и как это можно исправить?

Угловая версия: 1.1.5.

+1

Что произошло пару дней назад? :) Может быть, отладка с недопустимыми угловыми и jquery-версиями. – Heikki

+0

Несколько дней назад Google Chrome был обновлен до 32.0.1700.14 :) –

+0

Я не могу воспроизвести, даже с канарейкой v33. Можете ли вы создать плункер с этим кодом, пожалуйста? –

ответ

1

Отладка показала, что исключение выбрасывается из angular.js: 6371 на основе собственной операции добавления, и это не касается самого AngularJS.

Для тех, кто сталкивается с такой же проблемой, похоже, единственное решение - найти альтернативный способ реализации вашей задачи, на которой она терпит неудачу. По крайней мере, до следующего обновления Google Chrome.

Благодаря @Heikki для указания на chromium issues tracker.

1

Поскольку ошибка связана с конкатенацией String + Number, я использую toString() для чисел в качестве временного решения temp.

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

работал в моем случае.

Смежные вопросы