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和Asp、Php等后端程序间传值编码统一
Apr 17 Javascript
DOM Scripting中的图片切换[兼容Firefox]
Jun 12 Javascript
Jquery读取URL参数小例子
Aug 30 Javascript
JavaScript函数作用域链分析
Feb 13 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
May 18 Javascript
深入浅析JavaScript中的scrollTop
Jul 11 Javascript
js手动播放图片实现图片轮播效果
Sep 17 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
Sep 13 Javascript
vue项目中仿element-ui弹框效果的实例代码
Apr 22 Javascript
layui数据表格 table.render 报错的解决方法
Sep 29 Javascript
如何通过JS实现转码与解码
Feb 21 Javascript
如何通过vscode运行调试javascript代码
Jul 24 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
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
php sprintf()函数让你的sql操作更安全
2008/07/23 PHP
一贴学会PHP 新手入门教程
2009/08/03 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
2010/05/06 PHP
twig里使用js变量的方法
2016/02/05 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
2020/06/05 PHP
超清晰的document对象详解
2007/02/27 Javascript
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
vue父组件向子组件传递多个数据的实例
2018/03/01 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
adidas美国官网:adidas US
2016/09/21 全球购物
英语专业毕业生求职简历的自我评价
2013/10/24 职场文书
初中差生评语
2014/12/29 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL
如何更改Win11声音输出设备?Win11声音输出设备四种更改方法
2022/04/08 数码科技
python实现简单的三子棋游戏
2022/04/28 Python