gpt4 book ai didi

handlebars.js - 如果索引为某些值的语句,则为 Handlebars

转载 作者:行者123 更新时间:2023-12-04 10:25:01 30 4
gpt4 key购买 nike

我正在尝试创建一个表,该表使用来自JSON文件的对象填充每个表单元格。我的 Handlebars 模板只为每个对象添加了数据。我想完成的是为第5个项目创建一个新行,然后继续填充表格单元格,直到第10个项目再创建一个新行,等等。

我一直在阅读@index。是否有某些功能可以执行类似{{#if @index/5 == 0}}的功能?否则,是否有可以提供我所要实现的功能的 Handlebars ?我不限于使用我刚刚认为这是放置数据的最佳选择的表。

我当前的模板。谢谢你的帮助!我在下面使用 Handlebars helper 进行了编辑。但是信息仍然无法呈现。在此结束之后,还有其他代码可以编译模板,但是它在本地文件中包含一个非常长的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块 Handlebars 时,它会为您提供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>

关于handlebars.js - 如果索引为某些值的语句,则为 Handlebars ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24334639/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com