2013-12-14 38 views
3

基本上我想要這個:In Mustache templating is there an elegant way of expressing a comma separated list without the trailing comma?在Ractive模板中。確定ractive模板中的最後一個循環索引

對於對象

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

我想生產「紅,綠,藍」
我想知道,如果我在最後一個項目,這樣我就可以知道是否打印的分隔符。像這樣:

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

回答

4

現在不能輕易測試這個,但不會像下面的工作?

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

很酷但如果我不想逗號,而是一個HTML元素,這不會太好吧? – Mark

+0

爲什麼不呢?只需使用標記而不是逗號。 –

+0

我不喜歡有太多的嵌套。如果我在html元素中有一個字符串呢?然後,我會在mustache模板中的一個字符串內的html元素中有一個字符串! – Mark

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; 
    } 
    } 
}); 
1

我其實是想一個解決辦法,讓我把更復雜的東西,而不是逗號,比方說,一個DOM元素。我想出了(另一種)可行的方法。

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