何时执行AngularJS自定义过滤器?

时间:2015-03-30 16:31:02

标签: angularjs angularjs-filter

我开发了一个自定义的AngularJS过滤器,以便将来自数据库的文本格式化为html中的分行。

我只使用了一个页面,只有一行:

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

过滤器工作正常,但我注意到过滤器执行了63次。

为什么呢?从性能的角度来看,我认为这不是最好的。

1 个答案:

答案 0 :(得分:1)

AngualarJS将在UI上评估ng-ifng-showng-hideangular filter等指令,{{}}(插值),ng-bind,等在每个摘要周期完成时评估,消化周期的数量被调用所有UI级别的绑定都经过角度摘要周期。

我相信您使用的是比版本1.2更早的版本。(因为ng-html-bind-unsafe已被弃用)

如果您不希望每次都调用角度过滤器,则可以使用angular bindonce ::指令,该指令仅绑定数据一次&amp;从不运行它的摘要周期。(你应该使用Angular 1.3+来使用这个功能)

<强>标记

<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); 
}