我正在尝试创建一个表,用
JSON文件中的对象填充每个表格单元格.我的把手模板只是添加了每个对象的数据.我正在尝试完成的是每5个项目创建一个新行,然后继续填充表格单元格直到第10个项目然后它创建一个新行等.
我一直在读@index.是否有某些函数可以执行{{#if @index / 5 == 0}}之类的操作?否则是否有一些把手提供可以实现我正在尝试的功能?我并不局限于使用一个表,我认为这是放置数据的最佳选择.
我目前的模板.谢谢你的帮助!我使用把手助手编辑了下面的内容.但信息仍未呈现.还有其他代码在结束后编译模板,但它在本地文件中包含一个非常长的json数组用于测试.
<script type = "text/x-handlebars-template" id="itemTemplate"> <table class="tableStyle"> <tr> {{#each all_coupons}} {{#ifPos}} <tr> <td> <div class="wrapper"> <div class="header">{{coupon_title}}</div> <div class="column_wrapper"> <div class="two-col"> <div class="product_image"><img src="{{coupon_thumb}}" alt="Apple" height="110" width="110"></div> <div class="description">{{coupon_description}}</div> </div> </div> <div class="expiration">Valid From: {{valid_from}} to {{valid_to}}</div> </div> </td> </tr> {{else}} <td> <div class="wrapper"> <div class="header">{{coupon_title}}</div> <div class="column_wrapper"> <div class="two-col"> <div class="product_image"><img src="{{coupon_thumb}}" alt="Apple" height="110" width="110"></div> <div class="description">{{coupon_description}}</div> </div> </div> <div class="expiration">Valid From: {{valid_from}} to {{valid_to}}</div> </div> </td> {{/ifPos}} {{/each}} </tr> <table> </script> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/handlebars.js"></script> <script type="text/javascript" src-"js/handlebars.runtime-v1.3.0.js"></script> <script type="text/javascript"> Handlebars.registerHelper('ifPos',function (context,options) { var pos = false; for (var i = 0,j = context.length; i < j; i++) { if (context.length/5 == 0) { pos = true; } else { pos = false; } } console.log(pos); return pos; });
解决方法
context.length/5 == 0
不会给你每5元素的价值.当5/5为1时,最好使用模数(%)给出余数,这样当它等于0时你知道它已经完全进入了它.
此外,当您想要自己的if / else块句柄栏时,您可以使用options.fn和options.inverse.返回options.fn(//无论你想传递给if块)或者options.inverse(//什么都提供给else块)从你的帮助器进入块的相关部分.
Here is a code pen显示了一个快速示例,说明如何获取要迭代的元素的索引位置并基于此应用样式.
当索引%3为0时,辅助函数将转到if块的真实部分(第一个,因为它是基于0的索引,然后是每个第3个元素.所有其他时间它将转到else
帮手
Handlebars.registerHelper('ifThird',function (index,options) { if(index%3 == 0){ return options.fn(this); } else { return options.inverse(this); } });
模板
<script id="template" type="text/x-handlebars-template"> {{#each this}} <p class="{{#ifThird @index}} red {{else}} blue {{/ifThird}}">{{@index}} - {{name}}</p> {{/each}} </script>