关于面试中被问到 angular 中的双向数据绑定

2017-03-22 20:06:50 +08:00
 helios741
请问各位前端大佬们,在面试过程中 angular 的双向数据绑定是如何实现的应该怎么样回答,已经被问过几次了,但是每次觉得面试官对这个问题的回答都不是满意的,下面是我的回答:

angualr 是基于 MVVM 的, v 和 m 是不能直接进行交互的,可以通过 vm , angualr 中通过脏检查维护一个要检查的数组,去监视这个数据,一旦有变化就会进行改变, ng-model 实现了把数据绑定到对应的元素上面这样实现了 v 到 vm 的映射,在 m 中通过 angualr 中的内部
$apply 去监视这个数组一旦有变化进行相应的改变。
请大佬们不吝赐教,面试官想听到什么样的回答呀
2124 次点击
所在节点    职场话题
8 条回复
think2011
2017-03-22 20:20:54 +08:00
RE
2017-03-22 20:28:51 +08:00
被问过多次都不满意,为啥就没去搜一下正解或看看官方文档呢…
helios741
2017-03-22 20:37:09 +08:00
@RE 每次都查呀,但是觉得自己总结的不好。
helios741
2017-03-22 20:38:19 +08:00
@think2011 嗯嗯,谢谢了,也 Google 了不少文章了,但是还是觉得理解的不深刻
murmur
2017-03-22 20:45:48 +08:00
虽然大家都说脏检查 但是最基本的 digest 你都没提到。。
helios741
2017-03-22 21:03:21 +08:00
@murmur
@think2011
@RE
angualr 是通过脏检查机制来时间双向数据绑定的,当有指定的事件被触发之后就会进行脏检查,这个过程是通过$digest 实现的,会循环的遍历注册过的监听器,来检测他们的值是否有变化。
请问这样回答是不是比我上次回答的好一些
DaraW
2017-03-23 17:51:08 +08:00
脏值检测。。。
很简单啊
如果楼主愿意读英文的话去看一本书叫做《 Build Your Own Angularjs 》,第一小部分就是教你怎么实现 ng1 的脏值检测的。
helios741
2017-03-23 18:30:06 +08:00
@DaraW 好的,谢谢了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/349558

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX