Angularjs 1.3+单向与双向数据绑定
Angularjs 1.3+ One- vs Double Way Data Binding
我是Angular的新手,除了在视图中反映模型值的经典ng模型场景之外,还不清楚哪里需要双重数据绑定。
例如,我需要对ng个重复变量进行双重绑定吗?或者,对于可以在$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
双向数据绑定直接引用ng-model
指令,其含义是您可以在视图中更改模型值(通过输入ng-model
),也可以通过编程方式进行更改,其中一个更改将复制到另一个和视图中。
ng-repeat
只是一个在摘要周期开始时进行求值的表达式,因此这不是双向数据绑定。
就性能而言,角度绑定过程使用脏检查,这并不理想,使用与否ng-model
对此没有影响。只有当模型值发生更改或在angulars上下文中更改模型值时,摘要循环才会开始。
在看到您提供的代码片段后,{{::model}}
表示法将简单地创建一个一次性绑定,这意味着该值在您的视图中永远不会更改,也不会被监视。
不同的是,{{value}}被监视,当它更改时,该绑定被更新,由于脏检查,这会降低性能。然而,在您的示例中,该值没有被监视,从未被检查过,如果在条件语句中使用,则只计算一次。
这取决于你是否想使用其中一种,如果一个值永远不会改变,那么使用{{::}},因为它很快,如果值将来会改变,则使用{}}
只有当模型不断变化时,使用双重绑定才有用。如果您的模型将是一个常量,并且不需要频繁的更改,那么单个绑定将是有效的。如果你使用了太多的双绑定,即使在不必要的地方,这可能会导致AngularJS的严重开销,并可能使你的网站陷入困境。这是因为每一次双绑定都是通过角度手表进行监控的。
- OnsenUI AngularJS数据绑定无法正常工作
- 使用AngularJs数据绑定的三元运算符显示图像
- 如何在angularjs中检查Kendo树视图数据绑定事件
- AngularJS数据绑定中断ngRepeat+奇怪行为
- 使用大括号的 Internet Explorer 上的 AngularJS 数据绑定问题
- AngularJS -- 创建自定义数据绑定和 ng-repeat
- Angularjs和Jquery日期选择器数据绑定
- AngularJS数据绑定与KnockoutJS数据绑定
- angularJS单向数据绑定和模型编辑与ng重复
- Angularjs 1.3+单向与双向数据绑定
- 数据绑定在带有输入标签的 AngularJS 中不起作用
- AngularJS:将数据绑定到动态创建的 HTML
- 数据绑定在特定情况下不起作用(AngularJS)
- C3 中的双向数据绑定.js AngularJS 中的双向数据绑定
- Angularjs 双向数据绑定不起作用;$watch也不起作用
- AngularJS:双向数据绑定 - 带有ng重复的指令 - 不起作用
- 使用 D3js 时,带有 DOM 的 AngularJS 数据绑定不起作用
- AngularJS 数据绑定不会动态更新内容
- NodeJS与AngularJS,所需的HTML文件不是跨控制器的数据绑定全局变量
- AngularJS 2 - 内部属性数据绑定 - 异常:类型错误:无法读取未定义的属性