确定ractive模板中的最后一个循环索引

时间:2013-12-14 22:42:34

标签: ractivejs

基本上我想在Ractive模板中使用In Mustache templating is there an elegant way of expressing a comma separated list without the trailing comma?

对象

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

我想制作“红色,绿色,蓝色”
我想知道我是否在最后一项,所以我可以知道是否打印分隔符。类似的东西:

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

4 个答案:

答案 0 :(得分:4)

现在不能轻易测试,但不会像以下那样工作吗?

{{#items:i}}
    {{name}} {{ i < (items.length-1) ? "," : "" }}
{{/items}}

答案 1 :(得分:2)

可以确认Stephen Thomas的回答有效。另一种选择是加入数组项,如:

ractive = new Ractive({
  el: 'body',
  template: '{{ items.map( getName ).join( ", " ) }}',
  data: {
    items: [{ name: 'red' }, { name: 'green' }, { name: 'blue' }],
    getName: function ( item ) {
      return item.name;
    }
  }
});

答案 2 :(得分:1)

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

{{#items:i}}
  {{name}}{{#(i<(items.length-1))}}, {{/end}}
{{/items}}

答案 3 :(得分:1)

最近引入了@index@last魔术变量,因此该示例现在更具可读性:

{{#items}}
  {{.name}}{{#@index !== @last}}, {{/}}
{{/}}