2015-03-30 5 views
2

Я разработал пользовательский фильтр AngularJS, чтобы форматировать текст, поступающий из базы данных с линиями разрыва, в
в html.Когда пользовательские фильтры AngularJS выполняются?

У меня есть только одна страницы, где подмигнуло используются и только одну строка:

<p class="info-section-body-text" ng-bind-html-unsafe="boatSelected.comments | htmlFormat"></p> 

Этого фильтр работает нормально, но я заметил, что фильтр выполнен 63 раз.

Почему? Я думаю, что это не лучшее с точки зрения производительности.

+1

На каждые $ переваривать, это абсолютно нормально. – getOffMyLawn

ответ

1

AngualarJS будет оценены как директивы ng-if, ng-show, ng-hide, angular filter на UI, {{}} (интерполяции), и т.д. ng-bind получает оценку на каждом завершение цикла переварить, количество переваривать цикл вызывается все связыванием уровня UI проходит через цикл углового дайджеста.

Я считаю, что вы используете Older чем угловая версия 1.2. (Потому что ng-html-bind-unsafe устарело)

Если вы не хотите называть угловой фильтр каждый раз, вы можете использовать угловые bindonce :: директиву, которая будет связывать информацию только один раз & никогда не исчерпает переваривать цикл. (Вы должны иметь угловую 1.3+ использовать эту функцию)

Markup

<p class="info-section-body-text" 
    ng-bind-html="::trustedHtml(boatSelected.comments) | htmlFormat"></p> 

Код

$scope.trustedHtml = function(comments){ 
    //inject ngSanitize module in app & add `$sce` on controller level 
    return $sce.trustedHtml(comments); 
} 
+0

Да, я использую 1.0.7. – Rober

+0

@Rober, почему вы придерживаетесь этого, в то время как угловой уже выпустил свою стабильную версию 1.3. –

+0

Ну, я начал проект более года назад. И, исправьте меня, если я ошибаюсь, но я думаю, что нелегко перейти на 1.3. – Rober

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