我需要在索引模数为0时打开一行,并在它为1时关闭它,类似于这个想法:
{{each posts}}
{{#if @index%2==0}}
<div class="row">
{{/if}}
<div class="col-lg-6">HELLO</div>
{{#if @index%2==1}}
</div>
{{/if}}
{{/each}}
当然这个代码/想法并没有编译。我怎样才能实现它?
更新抱歉,也许我没有解释清楚。我想要做的是类似于这个PHP代码,但使用流星。 (更改了一些数字以便更好地理解)。
for($i = 0; $i<count(array); $i++):
if($i%4 == 0):
echo '<div class="row">';
endif;
echo '<div class="col-lg-3">HELLO</div>';
if($i%4==3 || $i == count(array) -1):
echo '</div>';
endif;
endfor;
我有一个带有帮助器的解决方案,它返回一个二维数组,还有另一种方法。
答案 0 :(得分:0)
您可以获取索引,然后将其传递给帮助程序以执行您的逻辑。
{{#each posts}}
{{#if isEven @index}}
<div class="row">
{{/if}}
<div class="col-lg-6">HELLO</div>
{{#if isOdd @index}}
</div>
{{/if}}
{{/each}}
Template.foo.helpers({
isEven(index) {
return (index % 2 == 0);
},
isOdd(index) {
return (index % 2 == 1);
}
});
编辑:
顺便说一下,你的if逻辑在匹配div时看起来不对。我认为你的意思更像是这样:
{{#each posts}}
{{#if isEven @index}}
<div class="row">
{{else}}
<div class="col-lg-6">HELLO
{{/if}}
</div>
{{/each}}
编辑2:
如果Blaze对div的格式化感到困惑,可能会像这样去混淆它。它也更容易阅读:
{{#each posts}}
{{#if isEven @index}}
<div class="row">
</div>
{{else}}
<div class="col-lg-6">HELLO
</div>
{{/if}}
{{/each}}
答案 1 :(得分:0)
如果你想在中间创建元素,无论如何,我会做这样的事情
{{#each posts}}
<div class="{{#if isEven @index}}row{{/if}}">
<div class="col-lg-6">HELLO</div>
</div>
{{/each}}
其中(类似于@zim建议)isEven
将是一个模板助手,将索引作为其参数
Template.hello.helpers({
isEven(index) {
return index % 2 === 0;
}
});