使用Handlebars.js拆分逗号分隔的字符串

9
最近我在使用handlebars.js工作,感到非常有趣。在这里我需要大家的帮助。
以下是我的json输入:
"ALERTS": [
    {
        "alert_description": "ALCOHOL",
    },
    {
        "alert_description": "DIAGNOSIS",
    }
]

我需要编写一个模板来创建以下逗号分隔的字符串。

ALCOHOL, DIAGNOSIS

我能够使用以下模板逐行打印这些值。
<div>
   <div>
{{#each this}}
    <span>{{alert_description}}</span>
{{/each}}
</div>
</div>

你们能帮我解决这个问题吗?感激不尽。

谢谢, Keth

2个回答

7

您可以使用{{#each}}和测试隐式的@index变量来完成此操作,而无需编写帮助程序:

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

您还可以测试 @first 和 @last(请参见handlebarsjs文档)。


3
针对这种情况,我将创建一个辅助程序。
以下是我的实现。
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标签(如span、div等)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接