评估函数调用中的表达式

时间:2014-11-12 00:49:48

标签: ember.js mustache handlebars.js

我有这个函数调用,它会生成一个复选框

{{checkbox "checkbox_{{id}}" }}

但正如您可能已经猜到的那样,我得到的结果是

<input type="checkbox" name="checkbox_{{id}}" id="checkbox_{{id}}">

我正在寻找它来评估函数调用中的{{id}}。

1 个答案:

答案 0 :(得分:2)

只需传递id

即可

传入id并让帮助者将其附加到nameid属性,并附上您想要的任何前缀。

<强>模板

{{{checkbox id}}}

<强>辅助

// Expression Helper
Handlebars.registerHelper('checkbox', function (id) {
    return '<input type="checkbox" name="checkbox_' + id + '" id="checkbox_' + id + '">';
});

JS小提琴:http://jsfiddle.net/gfullam/390t5cnh/


<强>更新 值得注意的是,Handlebars不会评估小胡子里面的小胡子。但...

子表达式

  

Handlebars提供对子表达式的支持,允许您使用   在一个小胡子中调用多个助手,并传入   内部帮助程序调用的结果作为外部帮助程序的参数。   Subexpressions由括号分隔。

{{{checkbox (myOtherHelper id)}}}

多个参数

您还可以将多个参数传递给单个帮助程序:

<强>模板

{{{checkbox "checkbox_" id}}}

<强>辅助

// Expression Helper
Handlebars.registerHelper('checkbox', function (prefix, id) {
    return '<input type="checkbox" name="' + prefix + id + '" id="' + prefix + id + '">';
});