一尘不染

$ scope。$ apply()有什么作用?

angularjs

$scope.$apply()当我通过Angular应用中的websocket接收数据时,我一直在使用它来更新模型的绑定。但是它实际上是做什么的,为什么需要调用它才能完成更新?


阅读 223

收藏
2020-07-04

共1个答案

一尘不染

Angular文档

$
apply()用于从角度框架外部以角度执行表达式。(例如,来自浏览器DOM事件,setTimeout,XHR或第三方库)。因为我们正在调用角度框架,所以我们需要执行异常处理的适当范围生命周期,并执行监视。

该文档还提供了它的伪代码:

function $apply(expr) {
  try {
    return $eval(expr);
  } catch (e) {
    $exceptionHandler(e);
  } finally {
    $root.$digest();
  }
}

简而言之,$apply对表达式求值并触发摘要循环,从而使Angular执行所有已注册的手表侦听器并更新任何视图绑定。

最后,您说过您一直在$apply更新模型的绑定,但这仅在更新来自Angular外部时才需要。在大多数情况下,您无需手动调用它。

2020-07-04