handlebars.js – 句柄if索引=某个值的语句

前端之家收集整理的这篇文章主要介绍了handlebars.js – 句柄if索引=某个值的语句前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试创建一个表,用 JSON文件中的对象填充每个表格单元格.我的把手模板只是添加了每个对象的数据.我正在尝试完成的是每5个项目创建一个新行,然后继续填充表格单元格直到第10个项目然后它创建一个新行等.

我一直在读@index.是否有某些函数可以执行{{#if @index / 5 == 0}}之类的操作?否则是否有一些把手提供可以实现我正在尝试的功能?我并不局限于使用一个表,我认为这是放置数据的最佳选择.

我目前的模板.谢谢你的帮助!我使用把手助手编辑了下面的内容.但信息仍未呈现.还有其他代码在结束后编译模板,但它在本地文件中包含一个非常长的json数组用于测试.

  1. <script type = "text/x-handlebars-template" id="itemTemplate">
  2. <table class="tableStyle">
  3. <tr>
  4. {{#each all_coupons}}
  5. {{#ifPos}}
  6. <tr>
  7. <td>
  8. <div class="wrapper">
  9. <div class="header">{{coupon_title}}</div>
  10. <div class="column_wrapper">
  11. <div class="two-col">
  12. <div class="product_image"><img src="{{coupon_thumb}}" alt="Apple" height="110" width="110"></div>
  13. <div class="description">{{coupon_description}}</div>
  14. </div>
  15. </div>
  16. <div class="expiration">Valid From: {{valid_from}} to {{valid_to}}</div>
  17. </div>
  18. </td>
  19. </tr>
  20. {{else}}
  21. <td>
  22. <div class="wrapper">
  23. <div class="header">{{coupon_title}}</div>
  24. <div class="column_wrapper">
  25. <div class="two-col">
  26. <div class="product_image"><img src="{{coupon_thumb}}" alt="Apple" height="110" width="110"></div>
  27. <div class="description">{{coupon_description}}</div>
  28. </div>
  29. </div>
  30. <div class="expiration">Valid From: {{valid_from}} to {{valid_to}}</div>
  31. </div>
  32. </td>
  33. {{/ifPos}}
  34. {{/each}}
  35. </tr>
  36. <table>
  37. </script>
  38.  
  39. <script type="text/javascript" src="js/jquery.js"></script>
  40. <script type="text/javascript" src="js/handlebars.js"></script>
  41. <script type="text/javascript" src-"js/handlebars.runtime-v1.3.0.js"></script>
  42.  
  43. <script type="text/javascript">
  44.  
  45. Handlebars.registerHelper('ifPos',function (context,options) {
  46. var pos = false;
  47.  
  48. for (var i = 0,j = context.length; i < j; i++) {
  49. if (context.length/5 == 0)
  50. {
  51. pos = true;
  52. }
  53. else {
  54. pos = false;
  55. }
  56. }
  57. console.log(pos);
  58. return pos;
  59. });

解决方法

  1. 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

帮手

  1. Handlebars.registerHelper('ifThird',function (index,options) {
  2. if(index%3 == 0){
  3. return options.fn(this);
  4. } else {
  5. return options.inverse(this);
  6. }
  7.  
  8. });

模板

  1. <script id="template" type="text/x-handlebars-template">
  2.  
  3. {{#each this}}
  4. <p class="{{#ifThird @index}}
  5. red
  6. {{else}}
  7. blue
  8. {{/ifThird}}">{{@index}} - {{name}}</p>
  9. {{/each}}
  10.  
  11. </script>

猜你在找的JavaScript相关文章