Angular中的双向绑定特性非常方便。在js中设置scope模型,如果scope发生改变,则在html视图中相应的值也会发生变化。同样,如果视图中的值发生变化,scope值也会接受反馈发生变化。
这种双向绑定的特性是由Angular内部设置的观察者(同$watch一样),定期向模型进行监听,通常是不需要我们进行额外操作的。
但是如果在Angular上下文之外的地方进行了修改,比如说,在一个按钮点击事件function()上修改了scope的值,这样AngularJS就没法观察到我们修改了什么,这样必须手动调用$apply()方法(其实在Angular内部设置的观察者时它也会主动调用$apply(),但作用范围只适用于AngularJS的上下文,固需要我们手动调用)。
示例
//按钮绑定事件
$scope.btnClick = function btnClick() {
//修改scope的值
$scope.status = !$scope.status;
$scope.apply();
}
或者
//按钮绑定事件
$scope.btnClick = function btnClick() {
$scope.apply(function(){
//修改scope的值
$scope.status = !$scope.status;
});
}
网友评论