基本上我想在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}}
答案 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}}, {{/}}
{{/}}