之前用easyui等各类富客户端的东西来展示表格,如今使用handlebars; ##1. handlebars基础 handlebar相似于el表达式javascript
<script id="task-table-template" type="text/x-handlebars-template"> {{#if content}} {{#each content}} <div class="col-sm-3 cl-padd" id="punish{{id}}"> <div class="ratio-box"> <div class="ratio-box-dd"> <span class="label label-blue">{{addOne @index}} </span> <span class="text-black jll">{{regionName}} </span> [ {{gt rate 10}} ]() <a class="text-blue-s jll" data-toggle="modal" onclick="modify('{{id}}','{{rate}}')">修改</a> <a class="text-blue-s jll" data-toggle="modal" onclick="deletePunish('{{id}}')">删除</a> </div> </div> </div> {{/each}} {{/if}} </script> <script> var myTemplate = Handlebars.compile($("#task-table-template").html()); 1 $('#acont').html(myTemplate(data)); 2 </script>
{content:[{"id":"1","rate":"20","regionName":"济南"},{"id":"1","rate":"20","regionName":"济南"}]}
{{#if key}} 其余代码 {{else}} 其余代码 {{/if}}
{{#each key}} <span class="label label-blue">{{@index}} </span> {{each}}
##2.自定义函数html
{{#each key}} <span class="label label-blue">{{addOne @index}} </span> {{each}}
Handlebars.registerHelper("addOne", function(index) { // 返回+1以后的结果 return index + 1; }); <script type="text/javascript" src="static/js/handlebars-v4.0.2.js" charset="utf-8"></script>
{{#each mesList}} {{#compare roletype}} <div class="panel-body"> <span class="text-gery">{{ctime}}</span> <br> <span class="text-time">{{content}}</span> </div> {{else}} <div class="panel-body" style="margin-right: 30px "> <div class="pull-right"><span class="text-gery">{{ctime}}</span> <span class="text-bluue">我</span></div><br><br> <div class="pull-right" >{{content}}</div><br><br> </div> {{/compare}} {{/each}}
这里的{{#compare value }}至关于{{#if}},注册的js代码以下:java
Handlebars.registerHelper("compare", function(v1, options) { if (v1 == 1) { // 知足添加继续执行 return options.fn(this); } else { // 不知足条件执行{{else}}部分 return options.inverse(this); } });
函数里的options指的应该是一次加载操做;jquery