grootJS ui控件定义

index13.html

<html>
<head>
<title>ui控件定义</title>
<script src="jquery-1.11.2.min.js"></script>
<script src="groot.js"></script>
</head>
<body>
<div gt-view="myview">
<ul gt-each="list">
<li gt-class="$index(back0:value % 2 ==0,back1:value % 2==1)"><span
gt-text="{$index}+1"></span><span>姓名:</span><span
gt-text="{name}"></span>---<span>性别:</span><span
gt-text="{sex}"></span> <input type="text" gt-wach="mychange" gt-value-change="name"><span gt-ui="name(myui)"></span></li>
</ul>
</div>
</body>
</html>
<script>
require("./ui");
groot.view("myview", function (vm, ve) {
vm.list = [
{"name": "张三", "sex": "男"}
,
{"name": "李四", "sex": "男"}
,
{"name": "王五", "sex": "男"}
];
ve.mychange = function ($self, value) {
groot.log("第" + $self.$index + "项在变化,新值为\"" + value + "\"");
}
})
</script>

要用一个空间首先要在js 引用控件 require(""./ui);

在html里面绑定控件<span gt-ui="name(myui)"></span>  name为属性名称 myui为控件名称

下面是该控件的定义

groot.ui["myui"] = function (element, id, data, value, upParent) {
groot.createElement("<span gt-text=\"{uivalue}\" style='color: red'></span><input gt-click=\"change\" type='button' value='控件'>", id,element);
var moudle = groot.view(id, function (vm, ve) {
vm.uivalue = value;
ve.change = function () {
vm.uivalue = "李四";
vm.uivalueRender();
upParent();
}
});;
}

函数groot.ui["myui"] 中 myui 为控件名称,他有四个参数

element 为 控件所在的html容器 即<span gt-ui="name(myui)"></span> 

id为系统为控件生成的id value

upParent 为同步父vm得值函数

data 为初始化控件多用值,如果需要初始化数据<span gt-ui="name(myui)" gt-ui-data="{key:'张三'}"> 这样 data就会接受到,并自动转为json对象

也可以

 groot.uiInit["test"]={"key":"GUJ778-090909"}
<span gt-ui="name(myui)" gt-ui-data="uiInit[test]"></span>

data 可以用这两种方式赋值

groot.createElement("<span gt-text=\"{uivalue}\" style='color: red'></span><input gt-click=\"change\" type='button' value='控件'>", id,element);

把html加入element 必须用groot.creatElement函数 这样 这个空间才会被系统的垃圾回收机制回收、

控件必须有一个属性uivalue ,这个属性是和父VM交互用 并且uivalue更新的时候必须调用upParent()来同步父视图

 

posted @ 2014-06-10 09:08  吹鱼算法  阅读(439)  评论(0编辑  收藏  举报