2016-05-31 7 views
1

Я использую handlebars.js с assemble.Как сгенерировать список парных пар пар?

У меня есть список парциальных (которые являются SVGs): значок-blue.hbs, значок-red.hbs, значок-white.hbs т.д.

Я хотел бы цикл через массив и генерировать различные частичный для каждого индекса.

У меня есть следующие в моей JSON:

"list": [ 
{ 
    "color": "red", 
    "val": "Lorem ipsum" 
}, 
{ 
    "color": "blue", 
    "val": "Lorem ipsum" 
}, 
{ 
    "color": "white", 
    "val": "Lorem ipsum" 
} 
] 

затем в index.hbs я хочу сделать что-то вроде этого:

{{#myData}} 
    {{#each list}} 
    {{> icon-{{color}} }} --> I know this isn't possible, so what can I do instead? 
    <span>{{val}}</span> 
    {{/each}} 
{{/myData}} 

Есть ли способ сделать это? или любым другим способом достижения ожидаемого результата?

ответ

1

В рулях вам нужно использовать помощник, чтобы присоединиться или Concat переменными ,

Вы можете добавить хелпер assemble так:

app.helper('icon', function(name) { 
    return 'icon-' + name; 
}); 

Затем вы можете использовать встроенный в частичном хелперов и рули subexpressions:

{{#myData}} 
    {{#each list}} 
    {{partial (icon color)}} 
    <span>{{val}}</span> 
    {{/each}} 
{{/myData}} 
+1

@anita Я видел ваши предложенные им изменения. Мой ответ касается текущей версии сборки. Если вы используете 'grunt-assemble', вы должны сделать другой ответ, указав, что с содержанием ваших изменений (я думаю, что это имеет смысл для' grunt-assemble'). – doowb

0

Это дикое предположение (я никогда не использовал рули), но я думаю, что это будет иметь смысл в JavaScript:

{{#each list}} 
    {{'icon-' + this.color}} 
    <span>{{val}}</span> 
{{/each}}