所谓双向,是指从model到view和从view到model。
View -> model相对直观,通过在view上注册事件来实现,比如click事件,type事件等等
Model -> view 是通过脏检测机制实现,阐述如下:
每个model在声明时(通过{{}}或者手动添加watch)会被注册到$watch列表中,以便将来变化时监测到来更新view。然后当特定事件发生时(由angular管理的指令如ng-click. $timeout, $ajax等回调),angular会通过$digest(angular不直接调用$digest,而是调用$apply)轮询所有watcher直至没有变化或者达到上限十次。
当这种变化由于在angular框架外发生时将不会被捕获(比如通过setTimeout),此时也可以通过$apply手动触发cycle。
https://www.sitepoint.com/understanding-angulars-apply-digest/
网友评论