artTemplate实现三层菜单
来源:互联网 发布:矩阵的微分运算法则 编辑:程序博客网 时间:2024/06/18 12:51
artTemplate有原生语法和简洁语法两种语法,在一个页面中简洁语法与原生语法不能混用,否则会残生冲突,所以你首先得确定你要用简洁语法还是原生语法,最终选择一个js导入,同时导入两个js,会导致只识别简洁语法,两个js包可点击这里下载。这边通过一个例子介绍稍微复杂的一种数据类型List中存放Map,Map中再存放List。
var menu = [ { menu_name : "电脑配件", submenu : [ { submenu_name : "电脑整机", subsubmenu : [ "笔记本", "台式一体机", "游戏本", "商务本" ] } ]}, { menu_name : "电脑配件", submenu : [ { submenu_name : "电脑整机", subsubmenu : [ "笔记本", "台式一体机", "游戏本", "商务本" ] } ,{ submenu_name : "电脑整机", subsubmenu : [ "笔记本", "台式一体机", "游戏本", "商务本" ] } ]} ];
通过artTemplate来达到三层菜单的效果,样式问题这边就不介绍了
原生语法
原生语法比较类似于html中直接写java代码,将Java代码<%%>包裹,他的代码更加容易被理解,使用原生语法,需要导入template-native.js文件。需要该文件,可点击下载。
创建模板
<script type="text/html" id="leftMenuTemplate"><%for(var i = 0;i < menus.length;i++){%> <li> <div class='cyList'><%=menus[i].menu_name%></div> <%for(var j = 0;j < menus[i].submenu.length;j++){%> <dl class='cy-detail'> <dt><%=menus[i].submenu[j].submenu_name%></dt> <%for(var k = 0;k < menus[i].submenu[j].subsubmenu.length;k++){%> <dd><%=menus[i].submenu[j].subsubmenu[k]%></dd> <%}%> </dl> <%}%> </li><%}%></script>
渲染模板
<script type="text/javascript">var menu = [ { menu_name : "电脑配件", submenu : [ { submenu_name : "电脑整机", subsubmenu : [ "笔记本", "台式一体机", "游戏本", "商务本" ] } ]}, { menu_name : "电脑配件", submenu : [ { submenu_name : "电脑整机", subsubmenu : [ "笔记本", "台式一体机", "游戏本", "商务本" ] } ,{ submenu_name : "电脑整机", subsubmenu : [ "笔记本", "台式一体机", "游戏本", "商务本" ] } ]} ];var data = { menus : menu }var html = template("leftMenuTemplate", data);$("#leftMenu").html(html);</script>
简洁语法
简洁语法比原生语法更加清晰,它更加类似于AngularJs的写法,使用简洁语法,需要导入template.js文件。可点击下载。
创建模板
<script type="text/html" id="leftMenuTemplate">{{each menus}} <li> <div class='cyList'>{{$value.menu_name}}</div> {{each $value.submenu}} <dl class='cy-detail'> <dt>{{$value.submenu_name}}</dt> {{each $value.subsubmenu}} <dd>{{$value}}</dd> {{/each}} </dl> {{/each}} </li>{{/each}}</script>
在这边需要使用到each标签的多重循环(嵌套),将第一重循环得到的list作为第二重循环的条件
注意:
{{each menus}}也可以写成{{each menus as value index}},value代表值,index代表索引。当不写 as value index,默认也是value和index,但是书写时必须加上$,而写完整时,不能加,否则会报错
渲染模板
<script type="text/javascript">var menu = [ { menu_name : "电脑配件", submenu : [ { submenu_name : "电脑整机", subsubmenu : [ "笔记本", "台式一体机", "游戏本", "商务本" ] } ]}, { menu_name : "电脑配件", submenu : [ { submenu_name : "电脑整机", subsubmenu : [ "笔记本", "台式一体机", "游戏本", "商务本" ] } ,{ submenu_name : "电脑整机", subsubmenu : [ "笔记本", "台式一体机", "游戏本", "商务本" ] } ]} ];var data = { menus : menu }var html = template("leftMenuTemplate", data);$("#leftMenu").html(html);</script>
使用这两种方法都能达到实现上图三级菜单的效果,不过我更推崇第二种,看起来更加清晰。
最后谈谈一些问题,因为我做的项目是并没有后台存在,所以我们以getJSON的方式来请求本地数据,但是出现了跨域问题,最后参考这篇文章,对浏览器进行了配置实现了本地数据的请求
阅读全文
1 0
- artTemplate实现三层菜单
- artTemplate
- arttemplate使用子模板实现嵌套循环
- artTemplate模板引擎实现原理简析
- 关于通过artTemplate模板的方式实现城市的联动
- com实现三层设计
- 三级联动 三层实现
- delphi三层数据库实现
- 三层代码实现
- 三层C#版实现
- 三层登录C#实现
- 三层登录实现
- 三层登录实现
- 三层架构之实现
- SSM实现三层架构
- 三层登录实现
- 初识 artTemplate
- artTemplate学习
- extern与头文件(*.h)的区别和联系
- JavaMail实现发送邮件实测可用
- ionic APP上传到apple store
- 树状数组一(二)维区间修改与求和
- nginx 调测 优化
- artTemplate实现三层菜单
- android 图标控件的实现(二)
- C++---array
- Centos 6.8 安装git
- 浅谈如何成功实施项目管理
- 统计难题(字典树-HDU-1251)
- nyoj 76超级台阶
- idea中文乱码终极解决方案
- 剑指offer第一题:二维数组中的查找解题报告