我开发了一个自定义的AngularJS过滤器,以便将来自数据库的文本格式化为html中的分行。
我只使用了一个页面,只有一行:
<p class="info-section-body-text" ng-bind-html-unsafe="boatSelected.comments | htmlFormat"></p>
过滤器工作正常,但我注意到过滤器执行了63次。
为什么呢?从性能的角度来看,我认为这不是最好的。
答案 0 :(得分:1)
AngualarJS将在UI上评估ng-if
,ng-show
,ng-hide
,angular 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);
}