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 に答える