源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

用模版生成HTML的的框架jquery.tmpl使用详解

  • 时间:2022-08-30 16:32 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:用模版生成HTML的的框架jquery.tmpl使用详解
动态请求数据来更新页面是现在非常常用的方法,比如博客评论的分页动态加载,微博的滚动加载和定时请求加载等。 这些情况下,动态请求返回的数据一般不是已拼好的 HTML 就是 JSON 或 XML,总之不在浏览器端拼数据就在服务器端拼数据。不过,从传输量方面来看,返回 HTML 不划算,而在 web 传输方面,现在更多的是使用 JSON 而不是 XML。 浏览器端根据 JSON 生成 HTML 有个很苦恼的地方就是,结构不复杂的时候还好,结构一复杂,就想死了,需要很小心很小心地写出几乎无法维护的 JavaScript 代码。 因此一些用模版生成HTML的的框架相继出现jquery.tmpl 就是其中的一种,下面我们来详细介绍下jquery.tmpl的用法 [b]下面重点介绍一下使用方法[/b]: 首先介绍一下  模板和数据,不用说这两个肯定是不可缺少的 模板有两种定义方法,下面给出具体code
[u]复制代码[/u] 代码如下:
var markup = "<li>Some content: ${item}.<br/>" + " More content: ${myValue}.</li>"; $.template( "movieTemplate", markup );
 
[u]复制代码[/u] 代码如下:
<script id="movieTemplate" type="text/x-jquery-tmpl"> <li><b>${Name}</b> (${ReleaseYear})</li> </script>
这样就定义了两种模板,前一种写到script里边,后边一种写到html里边 [b]数据用json[/b] 下面开始渲染模板
[u]复制代码[/u] 代码如下:
$( "#movieTemplate" ).tmpl( movies ).appendTo( "#movieList" ); $.tmpl( "movieTemplate", movies ).appendTo( "#movieList" );
注意:movies是json数据数组
[u]复制代码[/u] 代码如下:
var movies = [ { Name: "The Red Violin", ReleaseYear: "1998" }, { Name: "Eyes Wide Shut", ReleaseYear: "1999" }, { Name: "The Inheritance", ReleaseYear: "1976" } ];
[b]jquery.tmpl的几种常用标签分别有:[/b] ${}, {{each}}, {{if}}, {{else}}, {{html}} 不常用标签  {{=}},{{tmpl}} and {{wrap}}. ${}等同与{{=}}是输出变量 ${}里面还可以放表达式 (=和变量之间一定要有空格,否则无效) 示例:
[u]复制代码[/u] 代码如下:
<div id="div_demo"> </div> <script id="demo" type="text/x-jquery-tmpl">     <div style="margin-bottom:10px;">       <span>${ID}</span>       <span style="margin-left:10px;">{{= Name}}</span>       <span style="margin-left:10px;">${Number(Num)+1}</span>       <span style="margin-left:10px;">${Status}</span>     </div> </script> <script type="text/javascript">   var users = [{ ID: 'think8848', Name: 'Joseph Chan', Num: '1', Status: 1 }, { ID: 'aCloud', Name: 'Mary Cheung', Num: '2'}];   $("#demo").tmpl(users).appendTo('#div_demo'); </script>
[b]{{each}} 提供循环逻辑,$value访问迭代变量 也可以自定义迭代变量(i,value)[/b] 示例:
[u]复制代码[/u] 代码如下:
<div id="div_each"> </div> <script id="each" type="text/x-jquery-tmpl">     <h3>users</h3>     {{each(i,user) users}}         <div>${i+1}:{{= user.name}}</div>         {{if i==0}}             <h4>group</h4>             {{each(j,group) groups}}                 <div>${group.name}</div>             {{/each}}         {{/if}}     {{/each}}     <h3>depart</h3>     {{each departs}}         <div>{{= $value.name}}</div>     {{/each}} </script> <script type="text/javascript">   var eachData = { users: [{ name: 'jerry' }, { name: 'john'}], groups: [{ name: 'mingdao' }, { name: 'meihua' }, { name: 'test'}], departs: [{ name: 'IT'}] };   $("#each").tmpl(eachData).appendTo('#div_each'); </script>
[b]{{if }} {{else}}提供了分支逻辑 {{else}} 相当于else if[/b] 示例:
[u]复制代码[/u] 代码如下:
<div id="div_ifelse"></div> <script id="ifelse" type="text/x-jquery-tmpl">     <div style="margin-bottom:10px;"><span>${ID}</span><span style="margin-left:10px;">{{= Name}}</span>         {{if Status}}             <span>Status${Status}</span>         {{else App}}             <span>App${App}</span>         {{else}}             <span>None</span>         {{/if}}     </div> </script> <script type="text/javascript">   var users = [{ ID: 'think8848', Name: 'Joseph Chan', Status: 1, App: 0 }, { ID: 'aCloud', Name: 'Mary Cheung', App: 1 }, { ID: 'bMingdao', Name: 'Jerry Jin'}];     $("#ifelse").tmpl(users).appendTo('#div_ifelse'); </script>
[b]{{html}} 输出变量html,但是没有html编码,适合输出html代码[/b]  实例
[u]复制代码[/u] 代码如下:
<div id="div_html"></div> <script id="html" type="text/x-jquery-tmpl">     <div style="margin-bottom:10px;">     <span>${ID}</span>     <span style="margin-left:10px;">{{= Name}}</span>       ${html}       {{html html}}     </div> </script> <script type="text/javascript">   var user = { ID: 'think8848', Name: 'Joseph Chan', html: '<button>html</button>' };    $("#html").tmpl(user).appendTo('#div_html'); </script>
[b]{{tmpl}} 嵌套模版[/b] 实例
[u]复制代码[/u] 代码如下:
<div id="tmpl"></div> <script id="tmpl1" type="text/x-jquery-tmpl">     <div style="margin-bottom:10px;">       <span>${ID}</span>       <span style="margin-left:10px;">{{tmpl($data) '#tmpl2'}}</span>     </div>     </script> <script id="tmpl2" type="type/x-jquery-tmpl">     {{each Name}}${$value}  {{/each}}   </script> <script type="text/javascript">   var users = [{ ID: 'think8848', Name: ['Joseph', 'Chan'] }, { ID: 'aCloud', Name: ['Mary', 'Cheung']}];    $("#tmpl1").tmpl(users).appendTo('#tmpl'); </script>
[b]{{wrap}},包装器[/b] 实例
[u]复制代码[/u] 代码如下:
<div id="wrapDemo">     </div> <script id="myTmpl" type="text/x-jquery-tmpl">     The following wraps and reorders some HTML content:     {{wrap "#tableWrapper"}}         <h3>One</h3>         <div>             First <b>content</b>         </div>         <h3>Two</h3>         <div>             And <em>more</em> <b>content</b>...         </div>     {{/wrap}}     </script> <script id="tableWrapper" type="text/x-jquery-tmpl">     <table cellspacing="0" cellpadding="3" border="1"><tbody>         <tr>             {{each $item.html("h3", true)}}                 <td>                     ${$value}                 </td>             {{/each}}         </tr>         <tr>             {{each $item.html("div")}}                 <td>                     {{html $value}}                 </td>             {{/each}}         </tr>     </tbody></table>     </script>  <script type="text/javascript">         $(function () {             $('#myTmpl').tmpl().appendTo('#wrapDemo');         });     </script>
[b]$data $item $item代表当前的模板;$data代表当前的数据。[/b]  实例:
[u]复制代码[/u] 代码如下:
<div id="div_item_data"></div> <script id="item_data" type="text/x-jquery-tmpl">      <div style="margin-bottom:10px;">     <span>${$data.ID}</span>     <span style="margin-left:10px;">${$item.getName(" ")}</span>    </div> </script> <script type="text/javascript">    var users = [{ ID: 'think8848', Name: ['Joseph', 'Chan'] }, { ID: 'aCloud', Name: ['Mary', 'Cheung']}];      $("#item_data").tmpl(users,                 {                 getName: function (spr) {                    return this.data.Name.join(spr);                 }                 }).appendTo('#div_item_data'); </script>
[b] $.tmplItem()方法,使用这个方法,可以获取从render出来的元素上重新获取$item[/b] 实例
[u]复制代码[/u] 代码如下:
<script type="text/javascript">   $('#demo').delegate('div', 'click', function () {                 var item = $.tmplItem(this);                 alert(item.data.Name);             }); </script>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部