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 相关文章推荐
Mootools 1.2 手风琴(Accordion)教程
Sep 15 Javascript
jquery uaMatch源代码
Feb 14 Javascript
50个比较实用jQuery代码段
Sep 18 Javascript
文本框文本自动补全效果示例分享
Jan 19 Javascript
简单讲解AngularJS的Routing路由的定义与使用
Mar 05 Javascript
jquery实现文本框textarea自适应高度
Mar 09 Javascript
深入理解requestAnimationFrame的动画循环
Sep 20 Javascript
Node.js中如何合并两个复杂对象详解
Dec 31 Javascript
js原生Ajax的封装和原理详解
Mar 11 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
Jul 13 Javascript
使用Angular 6创建各种动画效果的方法
Oct 10 Javascript
深入理解webpack process.env.NODE_ENV配置
Feb 23 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
PHP判断文章里是否有图片的简单方法
2014/07/26 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
Mac环境下php操作mysql数据库的方法分享
2015/05/11 PHP
54个提高PHP程序运行效率的方法
2015/07/19 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
JavaScript版TAB选项卡效果实例
2013/08/16 Javascript
javascript判断并获取注册表中可信任站点的方法
2015/06/01 Javascript
javascript self对象使用详解
2016/10/18 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
python爬虫教程之爬取百度贴吧并下载的示例
2014/03/07 Python
实例讲解Python3中abs()函数
2019/02/19 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
Python中Subprocess的不同函数解析
2019/12/10 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
基于Python的Jenkins的二次开发操作
2020/05/12 Python
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
我未来的职业规划范文
2014/01/11 职场文书
学校安全工作制度
2014/01/19 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
县级文明单位申报材料
2014/05/23 职场文书
2014年检验员工作总结
2014/11/19 职场文书
财务出纳岗位职责
2015/03/31 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
22句经典语录:送给优柔寡断和胡思乱想的朋友们
2019/12/13 职场文书
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫