2013-05-14 2 views
5

В эти дни я работаю с handlerbars.js, и это кажется довольно интересным. Там мне нужна небольшая помощь от вас, ребята.Comma Separate String с помощью handlebars.js

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

"ALERTS": [ 
    { 
     "alert_description": "ALCOHOL", 
    }, 
    { 
     "alert_description": "DIAGNOSIS", 
    } 
] 

и мне нужно написать шаблон для создания следующих разделенных запятыми строку.

ALCOHOL, DIAGNOSIS 

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

<div> 
    <div> 
{{#each this}} 
    <span>{{alert_description}}</span> 
{{/each}} 
</div> 
</div> 

Можете ли вы, ребята, помочь мне решить эту проблему? Благодарю Вас за помощь

Благодаря Кетов

ответ

1

Вы можете сделать это без написания помощника с помощью {{}} #each и тестирования неявной переменной @index:

{{#each this}} 
    {{#if @index}}, {{/if}} 
    <span>{{alert_description}}</span> 
{{/each}} 

Вы также можете проверить @first и @last (см. handlebarsjs docs).

2

Для такого сценария, я создам помощник.

Вот моя реализация

Handlebars.registerHelper('commalist', function(items, options) { 
    var out = ''; 

    for(var i=0, l=items.length; i<l; i++) { 
    out = out + options.fn(items[i]) + (i!==(l-1) ? ",":""); 
    } 
    return out; 
}); 

и шаблон

<div> 
    <div> 
    {{#commalist this}} 
     <span>{{alert_description}}</span> 
    {{/commalist}} 
    </div> 
</div> 

В самом деле, помощник здесь только для запятой. Вы все еще можете поместить HTML внутри помощника (интервал, Div, ...)

+4

Вместо цикла вы можете использовать items.join() –

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