如果有人能提供任何可以帮助我破解面试的真实例子,我将不胜感激。
问问题
83 次
2 回答
1
不同之处在于 $apply 将从根向下触发摘要循环,如果您调用 $digest 它将从调用它的任何范围触发。
于 2016-09-04T08:42:05.287 回答
1
一旦你调用 $apply 就会调用 $digest
这是源代码
function $apply(expr) {
try {
return $eval(expr);
} catch (e) {
$exceptionHandler(e);
} finally {
$root.$digest();
}
}
$apply 将确保范围值中的所有更改都已被吸收,而 $apply 将评估它将调用 $digest 函数的所有表达式,如您在源代码中所见。
$digest 处理当前范围及其子范围的所有观察者。因为观察者的侦听器可以更改模型,所以 $digest() 会不断调用观察者,直到没有更多的侦听器被触发。
如果您的应用程序中有任何表达式需要在摘要循环之前进行评估,那么您应该使用 $apply 否则如果您只想应用更改,那么您可以使用 $digest。
于 2016-09-04T07:03:37.467 回答