2016-04-11 2 views
1

У меня есть следующий код:нг-, если метод выполняется непрерывно

data-ng-if="(fooCtrl.displayControl(1)) 

displayControl метод возвращает true или false.

Я нашел то, что ngif постоянно слушает это, даже после того, как он был оценен один раз. Как я нашел это, я указал на точку прерывания метода. После нескольких F8 (в отладчике) это будет продолжаться как обычно.

Почему так: ngif непрерывно исполняет этот метод?

+1

'ngIf' оценивается каждый цикл' $ digest'. В зависимости от того, насколько велика эта методика - это может привести к потере сайта. – tymeJV

+0

'data-ng-if =" :: fooCtrl.displayControl (1) "' – dfsq

ответ

2

Все ваши встроенные директивы будут срабатывать в каждом цикле $digest см больше о угловом переваривать цикла here и here

так быть в курсе с помощью директив, как ng-show или ng-if и не делают их слушать на функция, которая выполняет большую часть обработки или функции, которые имеют некоторые петли и такие вещи, заставляют их слушать уже определенные логические или простые функции.

+0

спасибо за ваш вклад! – Haris

4

Угловой пробег каждой функции наблюдателя в каждом цикле дайджест, так что это нормально, что ваша функция проверяется несколько раз. Если вы не хотите этого поведения, вы можете рассмотреть one-time binding (Angular 1.3.x).

data-ng-if=":: fooCtrl.displayControl(1)" 
+0

plus1 для привязки, для вашего ввода! – Haris

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