我目前正致力于处理angularJS应用程序的性能,并想知道这两个示例之间的性能是否有任何差异:
http://plnkr.co/edit/T5aHybkkCoF5MDzXX2Kk?p=preview
http://plnkr.co/edit/sX2ffPPOQTyFbb70elwp?p=preview
不同之处在于,在第一个示例中,在文件' testdirective.html' ng-if布尔值未绑定在一次表达式中。但是,它已被绑定为' index.html'中的一次性绑定。
<div ng-if="enabled">
vs
<div ng-if="::enabled">
在指令和索引文件中使用一次性表达式是否更好?
谢谢!
答案 0 :(得分:1)
是的,会有性能差异(在这种情况下可以忽略不计)。
如果传递给它的值是一次性绑定的话,该指令不会考虑,因此如果指令的模板不使用一次性绑定,它将注册一个新的观察者。
在摘要周期中运行此观察程序的成本基本上是两个示例中的性能差异。
您的示例中没有真正触及问题的额外注释是以下两种情况的行为相同:
<testdirective enabled="::true"></testdirective>
和
<testdirective enabled="true"></testdirective>
在第二种情况下,true
将被视为一个无法更改的常量,并且将删除已注册的观察者,就像使用一次性绑定一样。