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 相关文章推荐
删除节点的jquery代码
Jan 13 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
Apr 06 Javascript
javascript生成大小写字母
Jul 03 Javascript
javascript顺序加载图片的方法
Jul 18 Javascript
jquery实现全选、不选、反选的两种方法
Sep 06 Javascript
JavaScript实现隐藏省略文字效果的方法
Apr 27 Javascript
AngularJS自定义指令详解(有分页插件代码)
Jun 12 Javascript
原生JS 购物车及购物页面的cookie使用方法
Aug 21 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
Dec 11 jQuery
js生成word中图片处理方法
Jan 06 Javascript
一步步教会你微信小程序的登录鉴权
Apr 09 Javascript
在vue中实现清除echarts上次保留的数据(亲测有效)
Sep 09 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
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
php array_map()函数实例用法
2021/03/03 PHP
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
jQuery中调用WebService方法小结
2011/03/28 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
2013/11/19 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
vue下载excel的实现代码后台用post方法
2019/05/10 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
[01:11:46]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第一场 2月23日
2021/03/11 DOTA
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
Python版微信红包分配算法
2015/05/04 Python
[原创]pip和pygal的安装实例教程
2017/12/07 Python
Python 3.7新功能之dataclass装饰器详解
2018/04/21 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
面向对象学习之pygame坦克大战
2019/09/11 Python
np.dot()函数的用法详解
2020/01/17 Python
韩国知名的家庭购物网站:CJmall
2016/08/01 全球购物
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
一套带答案的C++笔试题
2014/01/10 面试题
.net笔试题
2014/03/03 面试题
实验室标语
2014/06/21 职场文书
个人先进事迹材料
2014/12/29 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
2016优秀大学生个人事迹材料范文
2016/03/01 职场文书
在Python 中将类对象序列化为JSON
2022/04/06 Python
Java 异步任务计算FutureTask
2022/04/28 Java/Android
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python
JavaScript实现音乐播放器
2022/08/14 Javascript