Handlebars Block helper类似于#each

时间:2014-03-14 11:28:31

标签: handlebars.js

我需要构建一个自定义的Block Helper,名为" multiple" 在对象存在时用作#each,当对象不存在时用作#unless。

模板就像这样

{{#multiple Data.Products}}
<input type="text" placeholder="Insert Product" value={{Name}}>   
{{/multiple}}

因此,当我们有一些产品时,它会呈现一组输入,其值是产品名称,非常适合编辑事项。

相反,如果没有可用的产品,我会在一个空的输入处显示我可以创建新产品。

我的尝试就是这个:

    Handlebars.registerHelper('multiple', function (context, options) {
        var j;
        var ret = "";
        if (context) {
            j = context.length;
            for (var i = 0; i < j; i++) {
                ret = ret + options.fn(context[i]); 
            }
        } else {
               ret = ret + options.inverse(this); //NOT WORKING
        }

    return ret;
});

1 个答案:

答案 0 :(得分:0)

这很好用;)

Handlebars.registerHelper('multiple', function (context, options) {
if (options.hash.value === context) {
    return options.fn(this)
} else {
    var j;
    var ret = "";
    j = context.length;


    for (var i = 0; i < j; i++) {
        ret = ret + options.fn(context[i]);
    }
    return ret;
}

});