我是Angular的新手,除了从模型值反映在视图中的经典ng模型场景外,还不清楚需要双数据绑定的位置。
例如,我需要对ng-repeat变量进行双重绑定吗?或者我是否需要它可以在$ watch中更改变量?
我读到单向数据绑定可以有显着的性能改进,所以我不想使用双数据绑定,除非我真的需要它
例如
<img ng-src="{{mySrc}}"> or
<img ng-src="{{::mySrc}}">
<div ng-repeat="item in items"> or
<div ng-repeat="::item in ::items"> where items retrieved from $http
答案 0 :(得分:3)
双向数据绑定直接指向ng-model
指令,它的意思是您可以在视图中更改模型值(通过输入ng-model
)并更改它以编程方式,任何更改都将复制到另一个和视图中。
ng-repeat
只是一个表达式,在摘要周期开始时会被评估,因此这不是双向数据绑定。
在性能方面,角度绑定过程使用脏检查并不理想,使用ng-model
与否将对此没有任何影响。摘要周期仅在模型值更改或在角度上下文中更改模型值时才会启动。
在看到您提供的代码段后,{{::model}}
符号只会创建一次性绑定,这意味着该值永远不会在您的视图中更改,也不会被观看。
不同的是{{value}}被观看,当它更改此绑定得到更新时,由于dirty checking而导致性能变慢,但在您的示例中,该值未被观看,它永远不会检查,如果在条件语句中使用,则只评估一次。
如果您想要使用其中任何一个,由您自己决定,如果某个值永远不会改变,那么请使用{{::}},因为它的速度很快,如果这些值将来会改变使用{{}}
答案 1 :(得分:0)
只有在模型经历不断变化时,才使用双重绑定。 如果您的模型将是一个常量并且不需要频繁更改,那么单个绑定将是有效的。 如果你使用太多的双重绑定,即使它没有必要,它可能会导致AngularJS的严重开销,并可能使您的网站陷入困境。这是因为每个双重绑定都是通过角度监视来监视的。