Ответ 1
Эта функция была добавлена в AngularJS в новых версиях. Дело в том, что в основном вы не должны перебирать некоторые примитивные типы (например, числа), а над некоторыми сложными объектами.
из того, что я понял, директива ngRepeat
проверяет ссылки не на фактические значения, поэтому, если вы выполняете итерацию над некоторыми сложными объектами, которые она пробуждает, но если вы попытаетесь сделать это по набору примитивных типов, это, скорее всего, не сработает пока "все" значения отличаются друг от друга.
ИЗМЕНИТЬ
Следующие строки являются копиями и вставляются из эта ссылка (и убедитесь, что вы используете относительно современную версию AngularJS - Я использую 1.1.5, и он отлично работает -)
Описание
Происходит, если в выражении ngRepeat есть повторяющиеся ключи. Дублирующие ключи запрещены, потому что AngularJS использует ключи для связывания узлов DOM с элементами.
По умолчанию коллекции привязаны по ссылке, которая желательна для большинства распространенных моделей, но может быть проблематичной для примитивных типов, которые интернированы (общие ссылки).
Например, проблема может быть вызвана этим недопустимым кодом:
<div ng-repeat="value in [4, 4]"> </div>
Чтобы устранить эту ошибку, убедитесь, что элементы в коллекции имеют уникальный идентификатор использования трека по синтаксису, чтобы указать, как отслеживать связь между моделями и DOM.
Чтобы разрешить приведенный выше пример, можно решить, используя дорожку по индексу $index, что приведет к тому, что элементы будут помещаться по их позиции в массиве вместо их значения:
<div ng-repeat="value in [4, 4] track by $index"></div>