为了账号安全,请及时绑定邮箱和手机立即绑定

如何在AngularJS中使用$Scope、$Watch和$Scope。$应用于AngularJS?

如何在AngularJS中使用$Scope、$Watch和$Scope。$应用于AngularJS?

三国纷争 2019-06-05 13:42:15
如何在AngularJS中使用$Scope、$Watch和$Scope。$应用于AngularJS?我不知道怎么用$scope.$watch和$scope.$apply..官方文件没什么用。我不明白的是:他们和DOM有联系吗?如何将DOM更改更新到模型?他们之间的连接点是什么?我试过本教程,但它需要理解$watch和$apply理所当然。做什么$apply和$watch那么我该如何恰当地使用它们呢?
查看完整描述

3 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

在AngularJS中,我们更新模型,视图/模板“自动”更新DOM(通过内置或自定义指令)。

$Apply和$Watch都是作用域方法,与DOM无关。

这个概念页面(“运行时”部分)很好地解释了$摘要循环、$Apply、$valAsync队列和$Watch列表。以下是随文而来的图片:


任何可以访问作用域的代码-通常是控制器和指令(它们的链接函数和/或它们的控制器)-都可以设置一个“表表示法“AngularJS将根据该范围进行计算。每当AngularJS进入其$Digest循环(特别是”$watch list“循环)时,就会进行此评估。您可以查看单个范围属性,可以定义一个函数来同时监视两个属性,还可以查看数组的长度等等。

当事情发生在“AngularJS内部”时-例如,输入一个具有AngularJS双向数据库功能的文本框(即使用ng-model)、$http回调火等。$Apply已经被调用,所以我们在上图中的“AngularJS”矩形中。所有的表示都将被评估(可能不止一次-直到没有检测到进一步的更改)。

当事情发生在“AngularJS之外”-例如,您在指令中使用了BIND(),然后该事件触发,导致您的回调被调用,或者一些jQuery注册的回调火-我们仍然处于“本机”矩形中。如果回调代码修改了任何$Watch正在观察的内容,则调用$Apply进入AngularJS矩形,从而使$Digest循环运行,从而AngularJS会注意到变化并执行其魔术。


查看完整回答
反对 回复 2019-06-05
  • 3 回答
  • 0 关注
  • 1203 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号