Handlebars.registerHelper - 获取Block内容的方法?

时间:2013-07-13 17:10:15

标签: ember.js handlebars.js

registerHelper中有没有办法获取块的内容?

让我们假设我们有以下模板:

{{#myif test}}thats the content i want to have{{/myif}}

以下registerHelper代码:

Ember.Handlebars.registerBoundHelper('myif', function(test)
{
    // do something
    return <content of handlebars block>;
});

非常感谢!

1 个答案:

答案 0 :(得分:5)

Handlebars将助手的嵌套块提供为options.fn,其中options是助手的最后一个参数。您可以使用上下文对象调用此块,该上下文对象将从该块中获取值。

要传递帮助程序本身的上下文,可以使用this调用它。

在这种情况下,您可能还需要options.inverse这是一个可选块,如果您的条件为假,将使用该块。

Ember.Handlebars.registerHelper('myif', function(condition, options) {
  if (condition) {
    return options.fn(this);
  } else {
    return options.inverse(this);
  }
});

随后在模板中使用,

{{#myif condition}}
  true block here
{{else}}
  else block here
{{/myif}}