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()来同步父视图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?