CNode

angularjs的运行原理是什么?

问答
Yyakczh发布于12 年前最后回复12 年前6 回复8263 浏览0 收藏

是dom节点根据对应的标签注册很多model层的观察者,如果数据更新了,就同时通知dom节点更新,我猜测是这样,有没有人写个简单的例子,关于双向绑定的实现

查看回复

回复 (6)

C
captainblue2013#1·12 年前

其实大部分时候是单向的,用到双向的首先你的元素是可编辑的

C
ChopperLee2011#2·12 年前

我觉得就是$digest 循环吧

J
jiyinyiyong#3·12 年前

数据更新的时候可以想办法探测到一个事件, 操作是一个赋值或者数组操作之类的 通过判断这个操作具体的内容, 可以知道做了什么, 然后在 DOM 上做对应的操作 DOM 上和数据上的操作通过 data binding 上写的内容进行关联... 大体的意思是这样

可以和 JSON Patch 对比一下, MVVM 的检查得到的是每个操作, JSON Patch 是得到一组操作

敢看的话可以看看这个, 简单点的 MVVM: https://github.com/yyx990803/vue/

W
wuliao49#4·12 年前

我只想说这个都写不出就不要说自己做过前端

Y
yakczh#5·12 年前
引用 jiyinyiyong数据更新的时候可以想办法探测到一个事件, 操作是一个赋值或者数组操作之类的 通过判断这个操作具体的内容, 可以知道做了什么, 然后在 DOM 上做对应的操作 DOM 上和数据上的操作通过 da...

@jiyinyiyong 这个貌似不支持ie8

简单看了一下代码 parser 负责解析模板里的标签和指令 observer 负责添加任务和通知 加载页面以后,通过解析出标签里的derective 然后提前注册事件 好象是通过 _.nextTick(flush) 来执行刷新的

observer里面有个Deps没看明白,是不是处理动态添加的元素的事件,比如原来页面上只有一个button 通过点击button以后 添加了一个数据项 这个数据项可能还有有新的修改,和删除的事件处理 ,depes就是来处理这个的吧?

J
jiyinyiyong#6·12 年前

进展真快, 我没看那么深, 不过你可以直接到微博上询问作者: http://weibo.com/u/1761511274?topnav=1&wvr=6&topsug=1

参与回复
登录后即可参与回复。登录