1

我正在尝试为我输入的每个数字创建一个 Handlebars.registerHelper() 将我的 {{>template}} 包装在 {{each items}} 中。

所以像这样;

{{forevery items 4}}
    {{> item_row_template}}
{{/forevery}}

期望的结果是每 4 个项目将其包裹在一个 div 周围。

<div class="row">
    <div class="item_1">item</div>
    <div class="item_2">item</div>
    <div class="item_3">item</div>
    <div class="item_4">item</div>
</div>

<div class="row">
    <div class="item_1">item</div>
    <div class="item_2">item</div>
    <div class="item_3">item</div>
    <div class="item_4">item</div>
</div>

ETC...

4

1 回答 1

2

您想要做的是创建一个助手,它将遍历列表并每隔一段时间手动附加 div。

这是一个例子:

Handlebars.registerHelper('forevery', function(context, limit, options) {
    var ret = "";
    if (context.length > 0) {
        ret += "<div>";
        for(var i=0, j=context.length; i<j; i++) {
            ret = ret + options.fn(context[i]);
            if ( (i+1) % limit === 0 ) {
                ret += "</div><div>";
            }
        }
        ret += "</div>";
    }
    return ret;
});

此函数将遍历项目数组,并且每第 n 行将关闭一个 div 并打开一个新的。所以这将被称为:

{{#forevery items 3}}
    {{> item_row_template}}
{{/forevery}}

希望这可以帮助 :)

于 2013-05-19T05:50:21.530 回答