grootJs的vm结构
按看这段代码生成的vm
groot.view("myview", function (vm, ve) { vm.say = "hello word!"; }) groot.sweep();
每个 groot.vew();
都会生成一个对象
对象放在 groot.vms里
比如 “myview”
就是 groot.vms["myview"],就能访问到
我们在vm里定义了一个属性say
我们看到 经过框架转换
多了一个sayRander();
当say 改变了 调用sayRander()就能更新我们的视图
我们还看到一个 $$ve 这里是存放我们的的事件的
比如这段代码
groot.view("myview", function (vm, ve) { vm.say = "hello word!"; ve.hello=function(){ vm.say="hello word!"; vm.sayRender(); } })
生成的 vm
我们在看一个复杂点的moudle 生成的 vm
看这段代码
groot.view("myview", function (vm, ve) { vm.data = { "name": "张三", "sex": "男" } ve.hello = function () { if (vm.data.name == "张三") { vm.data.name = "李四" } else { vm.data.name = "张三" } vm.data.nameRender(); } }) groot.sweep();
这里大家可以看到
vm.data 也生成了 一个 dataRender();
并且data 两个属性 name sex 也都有render 方法
除此之外 还多了 两个属性 一个方法
两个属性为 $$objectSelectordata,$$objectdata
一个方法 parent()
parent() 方法是返回父对象的
$$objectSelectordata 是储存的 vm.data这个对象对应的html代码片段的选择器
因为页面可能有多个数组对应这个对象
所以$$objectdata这个对象 是一个数组,存了 每一个html代码片段的选择器和对应的html片段(绑定以前的html片段)
这个 如果更新一个整个data的时候 只要把 这个快html 恢复到绑定数据前 ,重新扫描一遍就可以了
数组和这个类似,但是是有些不一样 大家可以自己看下
我们看到了 hello 这个事件