grootJs的vm结构

按看这段代码生成的vm

   groot.view("myview", function (vm, ve) {
        vm.say = "hello word!";
    })
    groot.sweep();

grootJs的vm结构_第1张图片

每个 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

grootJs的vm结构_第2张图片

我们在看一个复杂点的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();

grootJs的vm结构_第3张图片

这里大家可以看到

vm.data 也生成了 一个 dataRender();

并且data 两个属性 name sex  也都有render 方法

除此之外 还多了  两个属性 一个方法

两个属性为 $$objectSelectordata,$$objectdata

一个方法 parent()

parent() 方法是返回父对象的

$$objectSelectordata 是储存的 vm.data这个对象对应的html代码片段的选择器

因为页面可能有多个数组对应这个对象

所以$$objectdata这个对象 是一个数组,存了 每一个html代码片段的选择器和对应的html片段(绑定以前的html片段)

这个 如果更新一个整个data的时候 只要把 这个快html 恢复到绑定数据前 ,重新扫描一遍就可以了

数组和这个类似,但是是有些不一样 大家可以自己看下

我们看到了 hello 这个事件

你可能感兴趣的:(root)