使用JQuery数据模板Handlerbars
来源:互联网 发布:苹果下载必备软件 编辑:程序博客网 时间:2024/06/05 16:48
在涉及网站前台页面展示时,一般我们会通过Ajax请求获取JSON数据,然后JavaScript拼接HTML的方式进行。这种方法只需要服务器提供一个JSON字串,剩下的工作则由客户端浏览器去完成JavaScript脚本的解析工作,因此页面体验效果好,同时服务器承受的压力相对较很小。但这种方法下代码的可读性却比较差,而且随着陆续添加更复杂的元素,代码的复杂程度还会显著增加。
这种情况下,我们就需要JQuery数据模板,模板解决了一个非常实际的问题:利用模板我们能够以JavaScript对象为数据源,按照设计好的逻辑生成HTML,JQuery数据模板巧妙的将重心移到HTML层,让你用最少的代码得到所需的HTML。
Handlerbars是一个JavaScript语义模板库,很大程度上支持胡子(mustache)模板,即在HTML中夹杂各种模板指令。下载最新的Handlerbars.js 将其加载到引用页面中。
<span style="font-family:SimSun;font-size:14px;"><script type="text/javascript" src="../js/handlebars-v3.0.3.js"></script></span>
<span style="font-family:SimSun;font-size:14px;"><span style="white-space:pre"></span>// 注册一个Handlebars模版,通过id找到某一个模版,获取模版的html框架var myTemplate = Handlebars.compile($("#table-template").html());// 自定义助手,用以截取名称Handlebars.registerHelper('show_pro_name', function(pro_name) {var ret = pro_name;if(pro_name.length > 13){ ret = pro_name.substring(0, 13) + "...";}return ret;});// 将json对象用刚刚注册的Handlebars模版封装,得到最终的html,插入到基础table中。$('#tableList').html(myTemplate(data));var myTemplate = Handlebars.compile($("#table-template").html());<script id="table-template" type="text/x-handlebars-template"> {{#each this}} <tr> <td id="{{@index}}"><a href="YProjectDetail.aspx?id={{Id}}&pro_id={{Pro_id}}" target='_blank' >{{show_pro_name Pro_name}}</a><label id="proname{{@index}}" style="display:none" >{{Pro_name}}</label></td> <td>{{Governing_unit}}</td> <td style="text-align:right">{{Pro_assets}}</td> <td style="text-align:center">{{Pro_stage}}</td> <td style="text-align:center">{{Pro_area}}</td> <td style="text-align:center">{{Pro_office}}</td> </tr> {{/each}}</script></span>
Handlerbars包含很多内建助手指令
- #if if/then/else条件指令,对属性求值,若指定属性存在且不是null,则返回true
- #unless @if指令的反指令,若指定属性不存在或者为null,则返回true
- #each 迭代处理对象数组或一个对象的属性,#each助手指令提供了以下几个特殊属性
- this,返回当前正在处理的对象;
- @index 若#each指令正在处理一个数组,则@index为当前元素的数组索引;@key 若#each指令正在处理一个对象,则返回当前属性的名字。
- #with 为模板的一个区块设定上下文。
实际应用场景中,这些内建的助手指令可能不能完全满足我们的应用需要,这时我们就可以通过registerHelper来编写自定义助手指令。比如:返回的JSON 字段中name属性可能会比较长,页面展现可能需要我们进行字符串截取,所以我们使用了registerHelper编写了自定义助手指令。
<span style="font-family:SimSun;font-size:14px;">Handlebars.registerHelper('show_pro_name', function(pro_name) {var ret = pro_name;if(pro_name.length > 13){ ret = pro_name.substring(0, 13) + "...";}return ret;});</span>
registerHelper方法可接受两个参数:助手指令的名称以及一个函数,当我们在模板中使用这个助手指令时,就会调用该函数。我定义了一个show_pro_name的指令,在模板中调用如下:
<span style="font-family:SimSun;font-size:14px;">{{show_pro_name Pro_name}}</span>
0 0
- 使用JQuery数据模板Handlerbars
- 【handlerbars】模板引擎备忘录
- handlerbars
- jquery使用模板动态生成数据
- 读书笔记:视图和模板,改用Handlerbars做演示案例
- 使用jquery的tmpl动态加载数据模板
- jquery template模板使用
- jQuery模板和数据绑定
- jQuery 模板 jTemplates 使用心得
- JQuery模板插件-jquery.tmpl的使用
- jquery模板jquery.tmpl.js使用教程
- jquery 的Ajax 传送json数据 模板
- Jquery 模板数据绑定插件 使用方法
- tmpl 模板化引擎加载数据 Jquery
- 前端数据模板handlebars与jquery整合
- #1 Handlerbars 基础
- 使用XML模板填充数据
- 使用JXL 模板导出数据
- 单链表的拆分 SDUT -2120
- 砸金花变牌视频ξ▆【在线演示QQ:194714506】
- 三公作弊高科技》Ψ【在线演示QQ:194714506】
- Cocos2d-x 3.x 头像选择器,本地相册与拍照+头像编辑功能(Android、IOS双平台实现)
- 三公变牌高科技╭↙【在线演示QQ:194714506】
- 使用JQuery数据模板Handlerbars
- 三公变牌视频ㄨ▆【在线演示QQ:194714506】
- 普通扑克作弊高科技█◥【在线演示QQ:194714506】
- 一些有意思的网页
- 普通扑克变牌高科技㊣◤【在线演示QQ:194714506】
- 黑马程序员_java语言_多线程
- 普通扑克变牌视频△←【在线演示QQ:194714506】
- 普通纸牌作弊高科技◥▇【在线演示QQ:194714506】
- 第三章 第四十三题