初衷
之前我们要在js域更新model,需要这样:
model.set(‘name‘, ‘sub‘);
这实在太土了。。。
我们希望像angularjs一样,直接:
$scope.name = ‘sub‘;
然后bong, 视图就会更新!这样的黑科技必定是极好的。
目标
- 完成model更新黑科技
- 200行以内完成
实现
今次主要借鉴avalon“劫持”setter,getter的方法,链接:avalon简化版解读
虽说是简化过的avalon,还是挺难读的。
整理下思路,主要两大点:
1. vm对象 –> vModel对象,劫持vm各个属性的set,get方法
2. scanTag() –> 遍历dom树找关键字,去vModel找求值函数,注册到订阅者列表
其中去vModel这一点不是很清楚,这几天一定要搞清,自己mock一个出来
时间: 2024-11-05 12:27:24