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 indexOf函数使用说明
Jul 03 Javascript
Javascript Throttle &amp; Debounce应用介绍
Mar 19 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
Apr 11 Javascript
JS图片放大效果简单实现代码
Sep 08 Javascript
React实现双向绑定示例代码
Sep 19 Javascript
JS实现表单多文件上传样式美化支持选中文件后删除相关项
Sep 30 Javascript
几行js代码实现自适应
Feb 24 Javascript
浅谈PDF.js使用心得
Jun 07 Javascript
Vue全局分页组件的实现代码
Aug 10 Javascript
vue微信分享到朋友圈 vue微信发送给好友
Nov 28 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
Apr 29 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
May 29 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中遍历stdclass object的实现代码
2011/06/09 PHP
php版交通银行网银支付接口开发入门教程
2016/09/26 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
javascript中的几个运算符
2007/06/29 Javascript
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
jQuery中jqGrid分页实现代码
2011/11/04 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
2015/10/24 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
小程序云开发初探(小结)
2018/10/24 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
Vue调用后端java接口的实例代码
2019/10/28 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
Python将图片转换为字符画的方法
2020/06/16 Python
python3结合openpyxl库实现excel操作的实例代码
2018/09/11 Python
Python学习笔记之图片人脸检测识别实例教程
2019/03/06 Python
解决tensorflow训练时内存持续增加并占满的问题
2020/01/19 Python
django使用graphql的实例
2020/09/02 Python
应届大学生求职的自我评价
2013/11/17 职场文书
甲方资料员岗位职责
2013/12/13 职场文书
日语系毕业求职信
2014/07/27 职场文书
初中生毕业评语
2014/12/29 职场文书
初中语文教学研修日志
2015/11/13 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫