在Angular.js,双向绑定。
将视图直接
转换为数据,以及如何将数据的变化实时地通知到视图,以及如何做到这一点,这是多么神奇的
功能。
这是由于范围内的3个重要
方法造成的:
看美元
为消化
为申请
他们之间有什么
区别,让我们来
介绍一下:
看美元
这是侦听范围上数据的侦听器。
方法
显示:
$scope.$watch ('parameter', function (newValue, oldValue) {
逻辑
})
在上面,我们
创建了一个监听器。
参数是$对象范围内的对象(或对象的
属性)。注意,这是字符串形式。
如果你想去听scope.name美元财产。
美元美元范围。看('name',功能(价值、属性的旧值){
逻辑
})
如代码所示,名称需要引号。
参数后跟回调
函数,回调函数参数返回监视的属性、更改的新值、更改前的旧值。
为消化
他负责
检查范围内的数据是否已更改。如果属性发生变化,它会立即通知这个属性的侦听器($
注册侦听器)、触发器侦听器和
执行回调函数。
为申请
这种方法非常类似于摘要,而摘要检查范围内的所有数据。
为将相当于检查在rootscope所有的数据,他会检查所有的数据,从父到子。
申请(rootscope美元美元。美元消化)(= =)
$()方法有两种形式。
第一种方法是接受函数作为参数。
这触发$摘要函数并在一个参数中执行函数。
第二类不接受任何参数。
这只会触发一个$ $父级到分段的循环。
而不是直接消化美元在Angular.js,而不是使用美元美元()的应用范围。
我没有
设置监视器,为什么视图和数据可以在两个方向上绑定
例如,一个
文本框
事实上,事实上$范围对象具有一个属性名称,对应于上述双向绑定的视图。
如何实施
事实上,当我们定义NG模型名称或NG或name或{ }时
在这一点上,angular.js自动设置一个听众对美元模型名称属性范围:
美元美元范围。看('name',功能(价值、属性的旧值){
监视name属性中的更改
});
原来,angular.js帮我们自动创建一个侦听器,所以这个属性和scope.name美元数据会实时。
当然,有时候你会
发现数据已经改变了。但是UI不刷新,是双向绑定吗
不,
只有当$范围模型遍历摘要循环时,数据才返回。
例如,异步调用的方法,通过callbac返回的数据
例如,你设置一个定时触发setTimeout,然后
修改模型数据
总之,遗漏了范围模型的摘要循环,导致未通知UI刷新新数据的模型。
你怎么
处理这样的问题
我们必须手动调用摘要以循环检查数据。
正如我们上面所说的,不是直接调用摘要方法,而是手动调用$
应用程序方法来间接地触发摘要循环。
如下:
setTimeout(){()函数(
一个布外套;
$范围;
},2000);
问题是,现在是手动调用应用程序方法的时候了。
到目前为止,angular.js自动实现了美元的申请()的指导和
服务的一部分的方法。
例如,NG单击、NG模型、超时服务、HTTP服务等。
通话结束后,angular.js自动帮助我们打电话申请()美元实现双向数据绑定。