artTemplate有原生语法和简洁语法两种语法,在一个页面中简洁语法与原生语法不能混用,否则会残生冲突,所以你首先得确定你要用简洁语法还是原生语法。因此,下面通过artTemplate简洁语法渲染一种稍微复杂一点的数据结构。我下面会列举两种这样的数据结构的实现方式。
第一种实现方式如下:
类似的数据结构是这样的:
<script type="text/javascript">var data1 = {list: [{title: '周一',tag: {x: [{MNAME:"申请运输品种的相关药品生产批准证明文件复印件(生产批准证明文件不能体现所运品种还需提供质量标准等文件)(申请单位是经营企业的,可不提供该材料)",}, {MNAME:"购用批准证明文件(申请单位是经营企业的,可不提供该材料)",}, {MNAME:"《药品经营许可证》",}, {MNAME:"《药品生产许可证》",}]}},{title: '周二',tag: {x: [{MNAME:"申请运输品种的相关药品生产批准证明文件复印件(生产批准证明文件不能体现所运品种还需提供质量标准等文件)(申请单位是经营企业的,可不提供该材料)",}, {MNAME:"购用批准证明文件(申请单位是经营企业的,可不提供该材料)",}, {MNAME:"《药品经营许可证》",}, {MNAME:"《药品生产许可证》",}]}}]};-
var html = template("art3",data1);
$("#content").append(html);
创建模板
<script id="art3" type="text/html">{{each list}}<div><h2>{{$value.title}}</h2>{{include 'art4' $value.tag}}</div>{{/each}}</script><script id="art4" type="text/html">{{each x}}<h4>{{$value.MNAME}}</h4>{{/each}}</script>
上面这种实现渲染的方式也能渲染这种稍微复杂的数据结构。但是。有如下缺点:
1、前端开发人员需要点头哈腰的改数据结构,改成上面这种数据结构(前提是后端开发人员提供的不是上面这种数据结构)
2、你让后台改成这样的数据结构,你有没有考虑到这段代码的时间复杂度和空间复杂度,嵌套循环的层数越多,返回到前台的速度就越慢。
第二种实现方式如下:
数据结构:
var course = [ {course_name : "课程",subcourse : [ {subcourse_name : "计算机专业课程",subsubcourse : [ "Java", "数据结构", "计算机组成原理", "数据库" ]} ]}, {course_name : "课程",subcourse : [ {subcourse_name : "计算机专业课程",subsubcourse : [ "Java", "数据结构", "计算机组成原理", "数据库" ]} ,{subcourse_name : "计算机专业课程",subsubcourse : [ "Java", "数据结构", "计算机组成原理", "数据库" ]} ]} ];var data = {courses : course}var html = template("template", data);$("#course").html(html);
创建模板
<script type="text/template" id="template">{{each course}}<li><div class='cyList'>{{$value.course_name}}</div>{{each $value.subcourse}}<dl class='cy-detail'><dt>{{$value.subcourse_name}}</dt>{{each $value.subsubcourse}}<dd>{{$value}}</dd>{{/each}}</dl>{{/each}}</li>{{/each}}</script>
第二种实现方式的优点就是再也不找后台帮忙改数据结构了,提供给前端什么样的数据结构,我都能使用这样的模板渲染数据到页面上面。
彩蛋!彩蛋!彩蛋!
其实,还有第三种实现方式,那就是使用nodeJS,哈哈哈,厉害吧,我们可以使用nodeJS修改数据结构,改成我们自己想要的数据结构,这次,就永远不用考虑后台提供什么样的数据结构了,哈哈哈,这种方式时不时很厉害。
有什么不明白的,可以给我留言,我会及时回复的。