HandlebarsJS将助手传递给另一个助手

时间:2016-07-11 13:04:15

标签: javascript handlebars.js

我有两个帮助者,一个叫做tablerows,另一个叫做svg-icon。我想将svg-icon的结果传递给tablerows。 svg-icon返回HTML的Handlebars.SafeString。我怎样才能做到这一点?我看到了一个叫做子表达式的东西,但我似乎无法让它起作用。

   {{#tablerows section="Highlights" }}{{/tablerows}}
   {{#svg-icon symbol=symbol.value size="small" class="svg-icon--table" }}{{/svg-icon}}

这是我想要实现的目标,但没有成功:

    {{#tablerows section="Highlights" {{#svg-icon symbol=symbol.value size="small" class="svg-icon--table" }}{{/svg-icon}} }}
{{/tablerows}}

1 个答案:

答案 0 :(得分:0)

您正在使用#符号调用助手,就好像它们是Block Helpers一样,但是由于开始和结束标记之间没有任何内容,因此不需要它们成为块助手。

如果我们使用这些帮助程序作为regular非阻塞帮助程序,那么我们将能够使用subexpressions来传递svg-icon帮助程序的结果到tablerows帮助者:

{{tablerows (svg-icon symbol=symbol.value size="small" class="svg-icon--table") section="Highlights"}}

注意:这假定tablerows助手已被定义为接受由svg-icon返回的HTML字符串作为其第一个参数:

Handlebars.registerHelper('tablerows', function (iconHtml, options) {
    /* Helper body goes here. */
});