2

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>;
});

非常感谢!

4

1 回答 1

5

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

要传递帮助器本身的上下文,您可以使用this.

在这种情况下,您可能还需要options.inverse在您的条件为 false 时使用的可选块。

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}}
于 2013-07-14T05:57:29.797 回答