-3

如果有人能提供任何可以帮助我破解面试的真实例子,我将不胜感激。

4

2 回答 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 回答