Вопрос

Я новичок в Angular, но мне кажется, что это какое-то безумие.

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

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

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

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

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

Это было полезно?

Решение

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

Смотри первый ответ этот вопрос

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top