2016-09-20 76 views
3

在Chrome开发工具(我正在使用AngularJS Batarang(稳定))的AngularJS选项卡中。我有以下线,说明其看表情接过来评价最高的时间(如果表达式打过几次电话,评估时间增加)Angular JS:为什么{{objA.objB.date |日期:'dd.MM.yyyy HH:mm'}}需要很多时间?

{{objA.objB.date | date:'dd.MM.yyyy HH:mm'}} | 20.1% | 1009ms 
{{objA.objB.date | date:'dd.MM.yyyy, HH:mm'}} | 22.8% | 1148ms 

的问题是,为什么这样的评价需要这么多的时间?

回答

1

我认为Angular是“正常的”,因为Angular在每个消息周期运行每个过滤器(包括日期过滤器)两次,一旦发生了某些变化。这会影响性能。第一次运行是从$$观察者检测到任何更改,第二次运行是查看是否还有需要更新值的更改。

如果你可以改变你的DOM过滤器:

{{objA.objB.date | date:'dd.MM.yyyy HH:mm'}} 

使用$过滤器供应商,你可以将它发送给前进行预处理你的数据用来在控制器上运行的过滤器把它们解析到DOM之前该视图避免了解析DOM并理解内联过滤器语法的步骤:

$scope.theDate = $filter('date')(objA.objB.date, 'dd.MM.yyyy HH:mm'); 
+0

因此,您试图说所有的'filters'都死了? – Eugeny89

+0

不是。但他们每个人都经历了同样的过程。取决于很多事情,即。使用的过滤器数量。 – thepio

+0

我想我想说的是,很多事情都会影响到AngularJS应用程序的性能。如果性能成为问题,您可以谷歌如何提高您的AngularJS应用程序的性能。关于这个问题有很多很棒的文章。 – thepio

相关问题