2013-07-13 2 views
2

Есть ли способ в registerHelper, чтобы получить содержимое блока?Handlebars.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>; 
}); 

Большое спасибо!

+0

'вар MyContent = options.fn (это); return myContent; '? –

+0

console.log (myContent) => undefined ... –

+0

Ah okay, возврат работает до сих пор. Благодарю. –

ответ

5

Рулевой механизм предоставляет вложенный блок помощнику как 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}}