2015-03-10 4 views
0

Пытается связать массив с дубликатами. Сначала удалите дубликат следующим образом. Но я получаю это

Error: error:infdig 
Infinite $digest Loop 

return myArray.filter(function (elem, pos) { 
         return myArray.indexOf(elem) == pos; 
        }); 

Как удалить дубликаты?

ответ

1

Array.prototype.filter возвращает новый массив каждый раз. Если вы используете это как часть некоторой привязки, которая использует обычные $ watch (те, которые выполняют проверки идентичности, а не глубокие равенства), тогда $ watch создаст «новое значение» на каждом $ digest, что приведет к бесконечный цикл дайджеста.

Вместо этого вы должны либо фильтровать его один раз, либо, если данные меняются, $ смотреть данные и применять фильтр, когда он это делает. Например:

$scope.$watch('myData', function (value) { 
    $scope.myFilteredData = myData.filter(...) 
}) 
// bind to myFilteredData 
+0

Это одно поле, которое я пытаюсь связать. – Jon

+0

myData - это массив имен пользователей. Я просто хочу связать одно поле и удалить любые дубликаты. Я новичок в Angular. Поэтому мне нужно удалить дубликаты при привязке этого единственного поля - он будет производить новое значение каждый раз – Jon

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