9

这些天我正在使用 handlerbars.js 工作,这似乎很有趣。在那里我需要你们的一点帮助。

我有以下 json 输入

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

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

ALCOHOL, DIAGNOSIS

我能够使用以下模板逐行打印这些值。

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

你们能帮我解决这个问题吗?感谢你的帮助

谢谢凯思

4

2 回答 2

6

您可以通过使用 {{#each}} 并测试隐式 @index 变量来执行此操作而无需编写帮助程序:

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

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

于 2017-12-22T07:18:58.673 回答
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、...)

于 2013-05-14T07:36:46.923 回答