jquery.tmpl.js 是一个模板js  ,主要有2个方法

(1):$.template()方法,将一段script或者是Html编译为模板,例如 $.template('myTemplate', markup);  后者的markup一般是一段script脚本包围的变量名,或者是js里面的变量名,而前者的myTemplate则是指,我将markup编译为一个模板缓存,模板名称为myTemplate,如果我以后有需要在其他地方调用,则只用拿 myTemplate 即可,因为他已经在js的缓存里面了

(2):$('#myTemplate ).tmpl(userLangs).appendTo('#eachList');

        //模板               绑定      Json数据 添加到 指定的div或者是容器里面

 

一:基本使用方法演示  分4个步骤:(1)引入jquery和tmpl脚本 (2)开始写需要填充的模板和变量 (3)数据准备(4) 绑定模板

<!--引入脚本-->
<script src="js/jquery-1.4.1.min.js" type="text/javascript"></script>
<script src="js/jquery.tmpl.js" type="text/javascript"></script>
<!--开始写模板-->
<script id="each" type="text/x-jquery-tmpl">
<li>ID: ${ID}; Name: ${Name};<br />Langs:<ul>{{each Langs}}<li>${$index + 1}: <label>${$value}. </label></li>{{/each}}</ul></li>
</script>
<script type="text/javascript">
$(function () {
//这里是数据
var userLangs = [
{
ID: 'think8848', Name: 'Joseph Chan', Langs: ['Chinese', 'English']
},
{
ID: 'aCloud', Name: 'Mary Cheung', Langs: ['Chinese', 'French']
}];
//模板 绑定 数据 添加到 指定的div或者是容器里面
$('#each').tmpl(userLangs).appendTo('#eachList'); });
</script>

然后我们在html页面里面,给一个容器,用于显示数据绑定之后添加到什么容器上,可以是div也可以是其他的,例如这里是ul

 

1:  <ul id="eachList">
2:  <!--这里是将要显示到的DIV层-->
3:  </ul>
4:  

 

显示结果

生成的html代码

 

二:高级一点的运用 

Ajax获取Json数据,并绑定,并且我们的模板,第一个 采用 script 包围的方式,第二个则直接采用 js变量

$(function () {
$.ajax({
type: "post",
url: "handler/xxHandler.ashx",
data: { classid: "12000001989", type: "getclassinfo" },
dataType: "json",
success: populate //如果ajax成功,则执行这个操作
});
function populate(data) { // 把模板标记,编译成[模板缓存],起个名字叫 eachTemplate,方便我们以后在其他地方调用
$.template("eachTemplate", each);
//把缓存 加入 数据,然后添加到容器里面
$.tmpl("eachTemplate", data).appendTo("#eachList"); // 同一个数据,也能第二次利用
$.template("hwTemplate", HomeWorkSendTemplate);
//把缓存 加入 数据,然后添加到容器里面
$.tmpl("hwTemplate", data).appendTo("#hwList"); };
});

后台 handler 获取参数,并且返回 序列化的 json 给前台脚本

模板方式一:使用script脚本包围的方式,注意,一定要加上一个 type="text/x-jquery-tmpl"

    <script id="each" type="text/x-jquery-tmpl">
//模板1 直接用script脚本包围的变量 注意后面一定要加type为 tmpl的特定值
<li>班级Id: ${ClassId}; 班级名称: ${ClassName};<br />Langs:<ul>{{each Langs}}<li>${$index + 1}: <label>${$value}. </label></li>{{/each}}</ul></li>
</script>

 

模板方式二,采用外部链接 js 脚本的方式,这种方式 不用自己在后面写 type="text/x-jquery-tmpl"

<script src="js/mytemplates.js" type="text/javascript"></script>
/* 模板二  直接在 其他的例如 mytemplate.js 里面写变量 即可 注意,要在自己的页面里面进行脚本引入 */
var HomeWorkSendTemplate = '<div id="hwsendmain_${ClassId}" class="content_body">';
HomeWorkSendTemplate += '<!--布置作业开始--><div id="tag15">';
HomeWorkSendTemplate += ' <div class="content">';
HomeWorkSendTemplate += ' <div class="top">布置作业</div>';

三:使用复杂的json格式展示数据

(1):准备好模板,这里我们是使用一个表格来展示,所以模板是用的tr来显示每一行的数据

<!—模板  直接用script脚本包围的变量  注意后面一定要加type为 tmpl的特定值-->
<script id="classMuban" type="text/x-jquery-tmpl">
<tr><td>${Cid}</td>
                        <td>${Cname}</td><td><ul>{{each Students}}
<li>序号${$index + 1}: <label>学生id:${$value.Sid}学生名称:${$value.Sname}
学生头像:{{if $value.Sphoto}}
                                   <img src="${$value.Sphoto}" />
{{else}}
<img src="images/ico_01.png" title="这里是默认头像"/>
{{/if}}
学生是否选中:${$value.Check}</label></li>{{/each}}</ul>
                   </td>
</tr>
</script>

(2):准备数据,以及当文档加载完毕之后,执行绑定

//这里一定要加上,是在文档载入完成之后,才执行绑定模板的
$(function () {
var demodata = [{
"Cid": "1",
"Cname": "三年二班",
"Check": "0 0表示1个都没有勾选 1表示至少勾选了1个 2表示全部勾选",
"Cphoto": "班级图片地址",
"Students": [
{
"Sid": "s1",
"Sname": "周杰伦",
"Sphoto": "", //这里可能没有图片,那么我们显示的时候,还要判断是否显示默认图片
"Check": "0表示没有勾选 1表示已经勾选"
},
{
"Sid": "s2",
"Sname": "李宇春",
"Sphoto": "http://pic.cnitblog.com/face/582230/20131114141342.png",
"Check": "0表示没有勾选 1表示已经勾选"
}
]
}
, {
"Cid": "1",
"Cname": "三年四",
"Check": "0 0表示1个都没有勾选 1表示至少勾选了1个 2表示全部勾选",
"Cphoto": "班级图片地址",
"Students": [
{
"Sid": "s3",
"Sname": "周笔畅",
"Sphoto": "http://pic.cnitblog.com/face/572602/20131112163110.png",
"Check": "0表示没有勾选 1表示已经勾选"
},
{
"Sid": "s4",
"Sname": "董瑞",
"Sphoto": "http://pic.cnitblog.com/face/u119077.jpg",
"Check": "0表示没有勾选 1表示已经勾选"
}
]
}]; //编译模板classMuban为一个变量名-> nameClassMuban 这样以后在其他地方,就可以方便调用 nameClassMuban了
$.template("nameClassMuban", window.classMuban); //把模板缓存 加入 数据,然后添加到容器里面
$.tmpl("nameClassMuban", demodata).appendTo("#showMyJson");
});

(3):容器,这里为了显示方便,我们就用一个表格,并且第一行,我们自己已经给了。如果是实际项目中,一般都是DIV做容器

<table id="showMyJson" border="1">
<tr>
<td>&nbsp;班级Id</td>
<td>&nbsp;班级名称</td>
<td>&nbsp;班级学生</td>
</tr>
</table>

最后我们来看看效果如何

代码生成如下

Jquery 模板插件 jquery.tmpl.js 的使用方法(1):基本语法,绑定,each循环,ajax获取json数据的更多相关文章

  1. jQuery AJAX获取JSON数据解析多种方式示例

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. JQuery模板插件-jquery.tmpl

    转载:https://www.cnblogs.com/whitewolf/archive/2011/10/09/2204185.html 在下面介绍一款jQuery的模板插件 tmpl,是由微软想jQ ...

  3. Jquery 模板插件 jquery.tmpl.js 的使用方法(2):嵌套each循环,temp调用(使用预编译的模板缓存)

    直接上代码吧 一:主窗口 /*#region SendChooseTargetTemplate 发送候选人主窗口模板*/ var SendChooseTargetTemplate = ''; Send ...

  4. 使用ajax获取JSON数据的jQuery代码的格式

    具体的也可以参考:http://www.w3cfuns.com/notes/16039/2b004b1bcdf79092f2e66b2bbe9f51df.html

  5. jQuery中使用Ajax获取JSON格式数据示例代码

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSONM文件中包含了关于“名称”和“值”的信息.有时候我们需要读取JSON格式的数据文件,在jQuery中 ...

  6. jQuery滚动条插件 – jquery.slimscroll.js

    jquery.slimscroll.js插件是一个支持把内容放在一个盒子里面,固定一个高度,超出的则使用滚动.jquery.slimscroll.js不仅可以定义高度.宽度,还可以定义位置.滚动条大小 ...

  7. jQuery遮罩插件 jquery.blockUI.js

    Overview jQuery BlockUI 插件可以在不同锁定浏览器的同时,模拟同步模式下发起Ajax请求的行为.该插件激活时,会组织用户在页面进行的操作,直到插件被关闭.BlockUI通过向DO ...

  8. jQuery分页插件(jquery.page.js)的使用

    效果描述: 不用分页即可显示的jQuery插件 jQuery分页插件——jQuery.page.js用法很简单,效果很棒   1.前端   首先html的head中引入相关css与js <lin ...

  9. Jquery 分页插件 Jquery Pagination

    Jquery 分页插件 Jquery Pagination 分页插件来说,我觉得适用就行,尽量简单然后能够根据不同的应用场景能够换肤.展现形式等. 对于初学者想写分页插件的同学,也可以看下源码,代码也 ...

随机推荐

  1. MyEclipse默认标签TODO,XXX,FIXME和自定义标签的使用

    MyEclipse默认标签TODO,XXX,FIXME和自定义标签的使用 MyEclipse中的一些特殊的注释技术包括:1.    // TODO —— 表示尚未完成的待办事项.2.    // XX ...

  2. 客户端服务端通信protocol

    这个协议不知我在上面耗费了多长时间,也有人问过我咋回事,这个protocol不长,但对于我来说理解起来很费劲,今天回来看看忽然看懂了(80%),只能说不知看了多少遍 其实这些东西应该在来的一个月这样子 ...

  3. jquery css 简单笔记

    内容 要点:清空表单中所有数据,除去 button,submit,reset,hidden 的数据 $(':input','#myform') .not(':button, :submit, :res ...

  4. Java学习第四篇:数组,排序,查找

    一.数组 1.一维数组 (1).数组的定义 数据类型 数组名[]=new 数据类型[大小] public class Demo1 { public static void main(String[] ...

  5. hdoj 1879 继续畅通工程

    继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  6. 1034-IBM技术俱乐部主席竞选

    描述 今天IBM技术俱乐部举行主席竞选,你的任务是统计谁是得票最多的候选人. 输入 输入数据包含多组测试案例. 每组测试案例由N(0<N<1000)开头,N表示投票总数,后续N行每行包含一 ...

  7. VisualSVN Server的windows 2003配置和使用方法(图文并茂)

    1.为什么要用VisualSVN Server,而不用Subversion? 回答: 因为如果直接使用Subversion,那么在Windows 系统上,要想让它随系统启动,就要封装SVN Serve ...

  8. Android 加载时在actionBar右上角添加一个加载图标

    ①首先要在Activity的  setContentView()方法前调用requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); // ...

  9. 对于linux下system()函数的深度理解(整理)

    原谅: http://blog.sina.com.cn/s/blog_8043547601017qk0.html 这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同 ...

  10. Sina App Engine(SAE)入门教程(5)- SaeSegment(中文分词服务)使用

    分词能干什么? 提取一篇文章的关键字 检测特定的段落中有没有违禁词 智能机器人 …..尽你所想 开启SAE 分词服务 首先你需要在sae的管理面板开始分词服务后才能使用sae的服务.具体的开启操作: ...