首页 > 其他 > 详细

mvvm框架实现问题记录

时间:2015-10-05 20:46:54      阅读:291      评论:0      收藏:0      [点我收藏+]

这里说的MVVM框架是指类似vue、avalon通过双向绑定、数据驱动的框架。

基本原理:通过defineProperties拦截数据的get,set;在dom模版加载时,扫描dom上的特殊命名的标签,生成对对应标签属性的取值函数和刷新函数;在对属性的表达式取值时,将刷新函数注册到相关联的表达式变量改变后的处理数组中,完成数据操作自动触发dom改变。

代码实现上根据http://www.cnblogs.com/Aaronjs/重写,代码稍有不一致,

代码地址:https://github.com/lukezhang001/mvvmtest

 

由于只是简单实现,又有参考,过程中问题不是很多,碰到的问题简单记录如下:

1、代码写完,在本地调试过程中发现js的加载状态一直是pending,问题是浏览器上看不到js文件无法断点调试,后来经过不断的排除对比,发现代码中有死循环,修改后正常

2、代码中MVVM.define的factory执行了两次,第一次执行返回的scope是普通对象,用于生成Properties的描述数组,在defineProperties后返回的model要再执行一次factory。原来是将originalModel的属性copy到model中,问题是对于函数来说,简单的copy后上下文还是原来定义的上下文,导致函数里面的vm对象还是scope,而不是model,导致属性操作有误。

3、文件中引入了observer.js,实际中并没有用到,里面代码中函数里用了很多this,而foreach会改变函数中this,所以如果foreach的函数参数用到this,一定要把最后的context参数传进去

mvvm框架实现问题记录

原文:http://www.cnblogs.com/luke001/p/4856191.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!