handlerbars

[ajax+json+Handlebars]替代[vo+el表达式]
首先,java有几种对象(PO,VO,DAO,BO,POJO)   
   一、PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象。使用Hibernate来生成PO是不错的选择。 
   二、VO:value object值对象,说白了就是javabean。通常用于业务层之间的数据传递,PO只能用在数据层,VO用在商业逻辑层和表示层.
利用el表达式生成html代码,这是一个在服务器端执行的动作,在服务器端解析完成之后,
才发送到客户端浏览器上,这样做会占用大量服务器资源,而且速度缓慢。


el表达式构造html优点是能够保持html原有格式,js构造html优点是速度快省资源,
为什么我们不能把二者的优点结合在一起呢?这就是Handlebars.js。
Handlebars.js是一款基于Jquery的插件,以json对象为数据源,支持逻辑判断、循环等操作,
同时具有非常好的扩展性,体积60KB左右,经过小菜仔细的分析研究,这是一款不可多得的js模版引擎。


 1)引入插件
<span style="font-size:14px;"> <script type="text/javascript" src="script/jquery.js"></script>
 <script type="text/javascript" src="script/handlebars-1.0.0.beta.6.js"></script></span>

2)固定写法,将数据引入模板
<span style="font-size:14px;"> var myTemplate = Handlerbars.compile($("#table_temp").html());
 $("#table_list").html(myTemplate(data));</span>
3)模板中遍历集合 each
<span style="font-size:14px;"> <table class="current font" width="100%">
{{#each data.list}}
	<tr>
		<td align="left" style="width:50% !important;">{{userName}}<br>{{transFormatDate addTime}}</td>
		<td align="right" style="width:50% !important;">{{moneyFormat money}}元<br/>
			<#if tenderType = 0>网站投标
	    	<#elseif tenderType = 1>自动投标
	    	<#elseif tenderType = 2>手机投标
	    	</#if>
	    </td>
	</tr>					
{{/each}}
</table></span>

 4) 判断相等或者不相等 ,大于或者小于  ,这些函数handlebars,并没有提供,只能通过自定义,可参考transFormatJson.js文件来看,equal  inequality这两个方法也是在其中定义的,因为 Handlebars提供了一个帮助方法Handlebars.registerHelper()

//判断相等
Handlebars.registerHelper("equal",function(v1,v2,options){
   if(v1 == v2){
     //满足添加继续执行
     return options.fn(this);
   }else{
     //不满足条件执行{{else}}部分
     return options.inverse(this);
  }
});
使用方法如下:  {{#equal type 1}} //判断type是否为1

 
5) 
<span style="font-size:14px;">require.async('/plugins/handlebars-v1.3.0/handlebars-v1.3.0.js',function(){
          require.async('/plugins/handlebars-v1.3.0/transFormatJson',function(){
            var tpl = require('../../tpl/member/subsidy_log.tpl?_t=1454034099');
            var template = Handlebars.compile(tpl);
            var html = template(json);
            $('#myInvest_table').html(html);
          });
        });</span>

 6)在表格中使用<td>{{addOne @index}}</td>设置当前行的索引,也可以根据它得到当前记录,
 {{@index}}获取当前行的索引,addOne是在helper中注册的到一个方法,目的是将索引加1,默认从1开始计数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值