2013-08-19 3 views
5

http://plnkr.co/edit/b1yGAwkzojF4BFWgpMsv?p=previewПочему `filter` запускается несколько раз?

Почему filter триггера несколько раз?

Я думаю, {{name|test}} будет тигрировать дважды, потому что сначала имя null, а затем получил значение на контроллере.

Зачем он запустил filter, если включить шаблон?

+0

Мой вопрос: «Почему он запускал фильтр, когда включал шаблон?» – atian25

ответ

8

Каждый фильтр вызывается не реже одного раза в каждый цикл дайджест. This SO answer имеет скрипку, которая демонстрирует это.

Когда шаблон загружен, вы находитесь в цикле дайджеста, поэтому все фильтры будут вызваны.

+0

Это сумасшествие ... Угловой сказал нам, что он будет отображаться только при изменении области видимости, но в этом случае это означает, что мы получим много ненужных calc , а как насчет производительности? что мы должны делать, чтобы избежать этого? – atian25

+3

@ atian25, один из способов избежать использования фильтра - не использовать фильтр - я имею в виду рассчитать отфильтрованное значение один раз в контроллере, сохранить результат в свойстве scope, а затем использовать это свойство в представлении. Очевидно, что это не будет работать для каждого фильтра, но это будет для некоторых. –