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 相关文章推荐
基于AngularJS+HTML+Groovy实现登录功能
Feb 17 Javascript
AngularJS中使用HTML5手机摄像头拍照
Feb 22 Javascript
详解JavaScript中Hash Map映射结构的实现
May 21 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
Sep 27 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
Dec 19 Javascript
JavaScript通过filereader接口读取文件
May 10 Javascript
vue子父组件通信的实现代码
Jul 09 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
Mar 15 Javascript
微信小程序中如何使用flyio封装网络请求
Jul 03 Javascript
Js实现复选框的全选、全不选反选功能代码实例
Feb 28 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
Nov 11 Javascript
CocosCreator入门教程之网络通信
Apr 16 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
WINXP下apache+php4+mysql
2006/11/25 PHP
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
2017/07/10 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
js宝典学习笔记(上)
2007/01/10 Javascript
javascript数组的扩展实现代码集合
2008/06/01 Javascript
页面只有一个text的时候,回车自动submit的解决方法
2010/08/12 Javascript
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
js实现div层缓慢收缩与展开的方法
2015/05/11 Javascript
浅谈Javascript线程及定时机制
2015/07/02 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
python实现决策树分类算法
2017/12/21 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
Django 连接sql server数据库的方法
2018/06/30 Python
Django实现分页功能
2018/07/02 Python
python实现淘宝秒杀脚本
2020/06/23 Python
基于python实现查询ip地址来源
2020/06/02 Python
Python: glob匹配文件的操作
2020/12/11 Python
html5清空画布方法(三种)
2017/10/16 HTML / CSS
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
化学教学随笔感言
2014/02/19 职场文书
十一酒店活动方案
2014/02/20 职场文书
2014年营销工作总结
2014/11/22 职场文书
2014年秘书工作总结
2014/11/25 职场文书
幼儿园母亲节活动总结
2015/02/10 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
Nginx反向代理及负载均衡如何实现(基于linux)
2021/03/31 Servers