我必须在Handlebars中做这样的事情。
var loopTimes=10-(array1.lenght+array2.lenght);
for (var i=0; i<loopTimes; i++) {
<td></td>
}
现在我有以下代码来执行循环:
<script type="text/javascript">
Handlebars.registerHelper('times', function(n, block) {
var accum = '';
for(var i = 0; i < n; ++i)
accum += block.fn(i);
return accum;
});
</script>
然后我打电话给#34;次&#34;模板中的功能。
{{#each data}}
{{#each array1}}
<td>{{this}}</td>
{{/each}}
{{#each array2}}
<td>{{this}}</td>
{{/each}}
{{#times loopTimes}}
<td></td>
{{/times}}
{{/each}}
但我不知道如何设置&#34; loopTimes&#34;变量。我尝试创建2个函数加号和减号,如下所示:
Handlebars.registerHelper('plus', function(n, s) {
return n+s;
});
Handlebars.registerHelper('minus', function(n, s) {
return n-s;
});
在模板中我有这个来计算循环参数的值:
{{#times minus 10 plus array2.length array2.lenght}}
<td></td>
{{/times}}
但是,减号没有效果。模板永远不会评估负值,当然也不会输入加号函数。我试图用括号分隔每个函数(也用括号或引号),但如果我这样做,那么当Handlebars尝试创建html代码时我在javascript中有错误,因为它与预期的结构不匹配
我可以创建一个字段&#34; loopTimes&#34;在javascript中并将其设置为数据对象。我认为这是最简单的解决方案,但它非常缓慢,因为我可以得到10.000个元素的数据数组,而且我必须得到所有元素来设置这个字段。如果可能的话,我更愿意在模板中这样做。
有人可以帮帮我吗?有什么想法吗?谢谢!