3

基本上我想要这个:在 Mustache 模板中是否有一种优雅的方式来表达没有尾随逗号的逗号分隔列表?在 Ractive 模板中。

对于对象

{
  "items": [
    {"name": "red"},
    {"name": "green"},
    {"name": "blue"}
  ]
}

我想生产“红、绿、蓝”
我想知道我是否在最后一项,这样我就可以知道是否打印分隔符。就像是:

{{#items:i}}{{name}} {{#i.is_last}},{{/i}}{{/items}}  
4

4 回答 4

6

现在不能轻易测试这个,但不会像下面这样工作吗?

{{#items:i}}
    {{name}} {{ i < (items.length-1) ? "," : "" }}
{{/items}}
于 2013-12-14T23:52:03.227 回答
2

可以确认斯蒂芬托马斯的答案有效。另一种选择是像这样加入数组项:

ractive = new Ractive({
  el: 'body',
  template: '{{ items.map( getName ).join( ", " ) }}',
  data: {
    items: [{ name: 'red' }, { name: 'green' }, { name: 'blue' }],
    getName: function ( item ) {
      return item.name;
    }
  }
});
于 2013-12-15T01:31:45.823 回答
1

我实际上想要一个解决方案,它可以让我放置更复杂的东西而不是逗号,比如 DOM 元素。我想出了(另一种)有效的方法。

{{#items:i}}
  {{name}}{{#(i<(items.length-1))}}, {{/end}}
{{/items}}
于 2013-12-17T05:02:37.253 回答
1

最近@index@last引入了魔法变量,所以这个例子现在变得更具可读性:

{{#items}}
  {{.name}}{{#@index !== @last}}, {{/}}
{{/}}
于 2020-10-02T12:57:32.060 回答