jquery.tmpl的使用
jquery.tmpl是jQuery模板插件,http://plugins.jquery.com/tmpl/ (另外还有一个插件dot.js,不依赖与jquery,性能更佳,使用方法大同小异)
在网页中大量使用异步请求数据来更新页面内容非常常见,异步请求返回的内容一般是表现为json格式的数据,因为HTML结构的复杂性,我们在没有使用任何工具下要将json表现格式的数据生成HTML是非常繁琐的,而且容易出错,不好维护。因此通过jquery.tmpl和定义HTML模板可以轻松很多,更利于维护。
Tmpl提供了几种tag:
1, ${}:等同于{{=}},是输出变量,通过了html编码的。
2, {{html}}:输出变量html,但是没有html编码,适合输出html代码。
3, {{if }} {{else}}:提供了分支逻辑。
4, {{each}}:提供循环逻辑,$value访问迭代变量。
基本使用
1,首先我们需要引用jquery.js和jquery.tmpl.js
2,定义一个模板
3,调用tmpl()方法:$("模板ID").tmpl(data);
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> new document </title> </head> <style type="text/css"> #list li { padding: 8px 0; line-height: 1.8em; list-style-type: decimal; } </style> <body> <ul id="list"></ul> </body> </html> <script type="text/javascript" src='jquery.js'></script> <script type="text/javascript" src='jquery.tmpl.js'></script>
<!--定义一个User模板--> <script type="text/template" id='UserTmpl'> <li> <span>${NickName}</span> <span>${Age}</span> <span>${Gender}<span> </li> </script> <script type="text/javascript"> var users=[{ID:"0001",NickName:"小白",Gender:false,Age:18},{ID:"0001",NickName:"小黑",Gender:true,Age:20}]; $("#list").append($("#UserTmpl").tmpl(users)); </script>
{{if }} {{else}}的使用
明显对于性别Gender属性需要使用到{{if}}和{{else}}了
修改一下模板 {{if}}后面加的就是符合if里面条件后要输出的HTML, 使用{{if}}需要有结束标记{{/if}}
<li> <span>${NickName}</span> <span>${Age}</span> {{if Gender}} <span>男</span> {{else}} <span>女</span> {{/if}} </li>
{{each}}使用
<script id="each" type="text/x-jquery-tmpl"> <li> <span>${Title}</span> <span>Languages:</span> <ul> {{each Languages}} <li>${$value.Name}</li> {{/each}} <ul> </li> </script> <script type="text/javascript"> var movies = [{Title: "Meet Joe Black", Languages: [{ Name: "English" },{ Name: "French" }]}]; $("#each").tmpl(movies).appendTo('#div_each'); </script>