Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中


Posted in Javascript onOctober 29, 2011
$("#div").bindTemplate({ 
source : json object, 
template : null | $("#template") | "<div>{{object}}</div>", 
dateFormat : "d.m.y", 
tagOpen : "{{", 
tagClose : "}}" 
});

bindTemplate(data) : 绑定数据对象到模板的操作方法

source : json 格式的数据源

template :

null 不提供模板,InnerHtml输出
$(“#template”) 利用页面上定义好的html结构作为模板
“<div>{{...}}</div>” 直接定义模板
dateFormat : 时间的格式化方式

tagOpen : 开始的标记标签

tagClose : 结束的标记标签

其中dateFormat, tagOpen, tagClose都可以为null采用默认的配置, 有必要说一下默认的tagOpen & tagClose是用”{{” 和 ”}}”标记的

Json2Template 的应用
下面我们通过一下小例子来看看Json2Template的简单用法

创建一个MVC3的空项目

首先我们需要一个对象来存储传递的数据

public class UserInfo 
{ 
public int ID { get; set; } 
public string Name { get; set; } 
public int Age { get; set; } 
public string Address { get; set; } 
}

虚拟一个数据集合, 因为实际的应用场景中是通过查询数据库得到的
private IList<UserInfo> InitUserInfo() 
{ 
IList<UserInfo> users = new List<UserInfo>(); 
users.Add(new UserInfo() { ID = 1, Name = "Chenkun", Age = 21, Address = "Suzhou" }); 
users.Add(new UserInfo() { ID = 2, Name = "Zhangsan", Age = 21, Address = "Beijing" }); 
users.Add(new UserInfo() { ID = 3, Name = "Lisi", Age = 21, Address = "Henan" }); 
users.Add(new UserInfo() { ID = 4, Name = "Wangwu", Age = 21, Address = "Shanghai" }); 
users.Add(new UserInfo() { ID = 5, Name = "Zhaoliu", Age = 21, Address = "Guangzhou" }); 
users.Add(new UserInfo() { ID = 6, Name = "Huqi", Age = 21, Address = "Chongqing" }); 
return users; 
}

这些基础的东西准备好了, 我们需要把这个集合序列化成json一便提供给Json2Template使用, 这里我采用Newtonsoft.Json! 这里我们需要定义个Action
public JsonResult GetUserInfo() 
{ 
return Json(Newtonsoft.Json.JsonConvert.SerializeObject(InitUserInfo()), JsonRequestBehavior.AllowGet); 
}

序列化我们的集合为json 并且启用Get请求以便ajax通过Get方式调用

添加对json2template.js的引用后我们就开始一个ajax请求, 来获取后台的json数据, 再把获取的数据通过bindTemplate来帮定到HTML模板中显示出来

首先我们定义个简单的HTML模板:

<div id="template-userinfo" style="display: none"> 
<table width="100%"> 
<tr><th>编号</th><th>姓名</th><th>年龄</th><th>地址</th></tr> 
<tr class="{{item}}"> 
<td>{{ID}}</td> 
<td>{{Name}}</td> 
<td>{{Age}}</td> 
<td>{{Address}}</td> 
</tr> 
</table> 
</div>

{ 注意:把{{item}}定义到class中表示遍历item对象的子集类似forearch }

再定义一个用来输出这个模板的html容器

<div id="userlist"></div>

最后按照我们事先构想好的方式来请求json 数据并帮定模板
<script type="text/javascript"> 
$(document).ready(function () { 
var dataSouce = {}; 
$.ajax( 
{ 
url: '/home/getuserinfo', 
dataType: "json", 
success: function (data) { 
dataSouce.item = JSON.parse(data); 
$("#userlist").bindTemplate({ source: dataSouce, template: $("#template-userinfo") }); 
} 
}); 
}); 
</script>

F5运行一下看看效果

Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中

比较简单,鉴于从理论上来讲它确实还不错, 故推荐给大家!希望对你有帮助

源代码: Sample.Json2Template.rar

Javascript 相关文章推荐
JavaScript 常见对象类创建代码与优缺点分析
Dec 07 Javascript
js删除所有的cookie的代码
Nov 25 Javascript
28个常用JavaScript方法集锦
Jan 14 Javascript
jQuery基于json与cookie实现购物车的方法
Apr 15 Javascript
JS动态给对象添加属性和值的实现方法
Oct 21 Javascript
JS查找字符串中出现最多的字符及个数统计
Feb 04 Javascript
利用js的闭包原理做对象封装及调用方法
Apr 07 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
Jan 23 Javascript
Vuex 快速入门(简单易懂)
Sep 20 Javascript
微信小程序开发常见问题及解决方案
Jul 11 Javascript
JavaScript HTML DOM元素 节点操作汇总
Jul 29 Javascript
关于Js中new操作符的作用详解
Feb 21 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
Oct 29 #Javascript
基于jquery的无限级联下拉框js插件
Oct 29 #Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
Oct 29 #Javascript
仿猪八戒网左下角的文字滚动效果
Oct 28 #Javascript
js实现双向链表互联网机顶盒实战应用实现
Oct 28 #Javascript
js常用代码段收集
Oct 28 #Javascript
jWiard 基于JQuery的强大的向导控件介绍
Oct 28 #Javascript
You might like
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
关于session在PHP5的配置文件中的详细设置参数说明
2011/04/20 PHP
dedecms中使用php语句指南
2014/11/13 PHP
php服务器的系统详解
2019/10/12 PHP
javascript 设置某DIV区域内的checkbox复选框
2009/11/30 Javascript
js 字符串转换成数字的三种方法
2013/03/23 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
2015/05/08 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
js获取ip和地区
2017/03/10 Javascript
基于js的变量提升和函数提升(详解)
2017/09/17 Javascript
在vue项目中安装使用Mint-UI的方法
2017/12/27 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
详解Python3 基本数据类型
2019/04/19 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
Python中内建模块collections如何使用
2020/05/27 Python
Python生成并下载文件后端代码实例
2020/08/31 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
澳大利亚优质的家居用品和生活方式公司:Bed Bath N’ Table
2019/04/16 全球购物
大一军训感言
2014/01/09 职场文书
工作表扬信的范文
2014/01/10 职场文书
新闻传播专业求职信
2014/07/22 职场文书
销售员试用期自我评价
2014/09/15 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
2014年销售员工作总结
2014/12/01 职场文书
庆七一晚会主持词
2015/06/30 职场文书
升学宴家长致辞
2015/07/27 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书
Java中使用Filter过滤器的方法
2021/06/28 Java/Android