在AngularJS中,$apply的不同形式的作用域是什么?
方法1在AngularJS中,$apply的不同形式的作用域是什么?,angularjs,Angularjs,方法1 scope.tasks.pop(task); scope.$apply(); 方法2 scope.$apply(scope.tasks.pop(task)); 方法3 scope.$apply(function() { scope.tasks.pop(task); }); 在每种情况下,我的结果似乎都是一样的。我理解,当修改范围超出“正常”角度时,必须调用$apply,以便在数据绑定中获取更改。但是我不理解$apply的各种形式,也不理解为什么您可以在没有参数的情况下调用它,
scope.tasks.pop(task);
scope.$apply();
方法2
scope.$apply(scope.tasks.pop(task));
方法3
scope.$apply(function()
{
scope.tasks.pop(task);
});
在每种情况下,我的结果似乎都是一样的。我理解,当修改范围超出“正常”角度时,必须调用$apply
,以便在数据绑定中获取更改。但是我不理解$apply的各种形式,也不理解为什么您可以在没有参数的情况下调用它,而不是在传递给$apply的函数中进行范围修改
<> P>有什么区别,什么时候应该使用?< P>以更好地理解差异,请考虑下面的伪代码,从角度文档
当您使用函数或表达式字符串作为参数调用它时,angular可以正确处理从该函数抛出的错误,并将它们转发给$exceptionHandler服务。在任何情况下,它都会调用$digest()来更新最后的绑定。Oh OK。所以,只要有任何错误通过$exceptionHandler报告,它就不会对消化的内容产生任何影响。我想这是有道理的。谢谢
function $apply(expr) {
try {
return $eval(expr);
} catch (e) {
$exceptionHandler(e);
} finally {
$root.$digest();
}
}