2015-06-17 2 views
1

Могу ли я вернуть хеш из хелпера Handlebars? Я попытался это:Ручки: возвратный хеш из помощника

На мой взгляд:

initialize: -> 
     super 
     this.hash = {key1: 'test1', key2: 'test2'} 
     Handlebars.registerHelper 'show', => 
     return this.hash 

В шаблоне:

{{show.key1}} 

Что я делаю не так? Благодаря!

ответ

2

Рули увидят следующее:

{{show.key1}} 

как попытку получить доступ к key1 свойству showпеременной, он не будет знать, что show в этом случае предполагается, обратитесь к вашему showпомощнику. Это всего лишь часть синтаксиса Handlebars, и я не думаю, что вы можете с этим поделать.

Однако вы можете передать key1 в качестве аргумента в свой помощник show. Если определить помощника, как это:

Handlebars.registerHelper 'show', (key, context) => 
    @hash[key] 

, а затем использовать его как это:

{{show "key1"}} 

, то вы получите результат вы ожидаете.

Демо: https://jsfiddle.net/wrykfxyj/

0

нашел другой способ. Yo может передать контекст состояние помощника, как это:

Helper:

 this.showAttributes = {title: 'title1', author: 'author1'} 

     Handlebars.registerHelper 'show', (cond) => 
     return cond.fn(this.showAttributes) 

В шаблоне:

{{#show}} 
    {{title}} 
    {{author}} 
{{/show}} 

отлично работает.

Смежные вопросы