Подтвердить что ты не робот

Это нормально для фильтрации AngularJs

Я очень много нового для angular, но я чувствую, что это отчасти сумасшедший.

У меня есть несколько коллекций, отображаемых через ng-repeat в одной области контроллера. Там есть поле ввода для каждого списка для выполнения простого запроса. Я играл с различными фильтрами в своем коде, и в итоге я включил console.log в свою функцию фильтрации. Я понял, что каждый раз, когда моя функция фильтра вызывается для одного списка, он вызывался для всех списков в области. Кроме того, он каждый раз вызывал функцию фильтра дважды. Таким образом, с тремя коллекциями фильтрация одного из списков вызовет функцию фильтра 6 раз.

Я подумал, что это был мой собственный фильтр, поэтому я попробовал его по умолчанию. Та же история. Здесь мой код:

https://dl.dropbox.com/u/905197/angular-filter-test.html

Перейдите на консоль и убедитесь сами:/

Что я здесь делаю неправильно? Это похоже на такую ​​простую вещь, но она так много работает.

4b9b3361

Ответ 1

Это нормально, angularjs использует подход "грязной проверки", поэтому ему нужно вызвать все фильтры, чтобы увидеть, существуют ли какие-либо изменения. После этого он обнаруживает, что у вас есть изменение на одной переменной (той, которую вы набрали), а затем повторно выполняет все фильтры, чтобы определить, есть ли у него другие изменения.

См. первый ответ этого вопроса