V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
helios741
V2EX  ›  职场话题

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

  •  
  •   helios741 · 2017-03-22 20:06:50 +08:00 · 2107 次点击
    这是一个创建于 2805 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请问各位前端大佬们,在面试过程中 angular 的双向数据绑定是如何实现的应该怎么样回答,已经被问过几次了,但是每次觉得面试官对这个问题的回答都不是满意的,下面是我的回答:

    angualr 是基于 MVVM 的, v 和 m 是不能直接进行交互的,可以通过 vm , angualr 中通过脏检查维护一个要检查的数组,去监视这个数据,一旦有变化就会进行改变, ng-model 实现了把数据绑定到对应的元素上面这样实现了 v 到 vm 的映射,在 m 中通过 angualr 中的内部
    $apply 去监视这个数组一旦有变化进行相应的改变。
    请大佬们不吝赐教,面试官想听到什么样的回答呀
    8 条回复    2017-03-23 18:30:06 +08:00
    think2011
        1
    think2011  
       2017-03-22 20:20:54 +08:00
    RE
        2
    RE  
       2017-03-22 20:28:51 +08:00 via iPhone
    被问过多次都不满意,为啥就没去搜一下正解或看看官方文档呢…
    helios741
        3
    helios741  
    OP
       2017-03-22 20:37:09 +08:00
    @RE 每次都查呀,但是觉得自己总结的不好。
    helios741
        4
    helios741  
    OP
       2017-03-22 20:38:19 +08:00
    @think2011 嗯嗯,谢谢了,也 Google 了不少文章了,但是还是觉得理解的不深刻
    murmur
        5
    murmur  
       2017-03-22 20:45:48 +08:00
    虽然大家都说脏检查 但是最基本的 digest 你都没提到。。
    helios741
        6
    helios741  
    OP
       2017-03-22 21:03:21 +08:00
    @murmur
    @think2011
    @RE
    angualr 是通过脏检查机制来时间双向数据绑定的,当有指定的事件被触发之后就会进行脏检查,这个过程是通过$digest 实现的,会循环的遍历注册过的监听器,来检测他们的值是否有变化。
    请问这样回答是不是比我上次回答的好一些
    DaraW
        7
    DaraW  
       2017-03-23 17:51:08 +08:00
    脏值检测。。。
    很简单啊
    如果楼主愿意读英文的话去看一本书叫做《 Build Your Own Angularjs 》,第一小部分就是教你怎么实现 ng1 的脏值检测的。
    helios741
        8
    helios741  
    OP
       2017-03-23 18:30:06 +08:00
    @DaraW 好的,谢谢了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3346 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:40 · PVG 20:40 · LAX 04:40 · JFK 07:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.