我一直在使用AngularJS开发应用程序,我一直在学习异步数据加载的细节。我注意到有时候我需要监视我的数据,以便我的控制器/指令等到数据被检索后再继续。
我的问题是:我什么时候需要放一块手表?到目前为止,如果我注意到没有它我的应用程序将无法运行,我只会放置一个,但我并不完全理解它背后的逻辑。是否只在我使用http从外部源检索数据时才需要它?或者可能是我需要一个watch()语句,即使我已经将数据存储在局部变量中了?
谢谢!
答案 0 :(得分:0)
Angular.JS的一个特殊功能是它能够管理JavaScript变量和DOM之间的双向绑定。为此,它会自动在表达式({{ }}
)内引用的任何变量上注册观察者。当一个名为$ digest的循环检测到对watchExpression的更改以处理当前范围内的所有观察者及其子节点时,就会运行这个循环。
通常不需要手动注册$ watch,但可以在需要$ digest更新表达式更改$ scope的情况下使用,或者如果您有兴趣对更改进行更改你还没有建立自动绑定。 $ watch的最常见用法是在一个指令中,在$ scope值更改时更新DOM。如果你在控制器中使用$ watch,你可能做错了。
一些使用指南: