Antworten:
Sie können es so machen ...
Mustache.render('<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>', ['foo','bar','baz']);
Es funktioniert auch für solche Dinge ...
var obj = [{name: 'foo'}, {name: 'bar'}];
var tmp = '<ul>{{#.}}<li>{{name}}</li>{{/.}}</ul>';
Mustache.render(tmp, obj);
{{.}}
, {{1}}
oder etwas ähnliches in Schnurrbart (5).
Ich hatte heute Morgen das gleiche Problem und nach ein wenig Experimentieren stellte ich fest, dass Sie mit {{.}} Auf das aktuelle Element eines Arrays verweisen können:
<ul>
{{#yourList}}
<li>{{.}}</li>
{{/yourList}}
</ul>
Mustache.render('<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>',['foo','bar','baz']);
Mustache.render('<ul>{{#.}}{{.}}{{/.}}</ul>', {yourList: ['foo','bar','baz']});
Aufbauend auf der Antwort von @ danjordan wird dies tun, was Sie wollen:
Mustache.render('<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>',['foo','bar','baz']);
Rückkehr:
<ul><li>foo</li><li>bar</li><li>baz</li></ul>
{a:'foo',b:'bar',c:'baz'}
... Wie werden anonyme Referenzen beim Iterieren über Objekte erstellt?
Im Folgenden finden Sie Beispiele zum Rendern eines mehrdimensionalen Arrays in einer Vorlage:
Beispiel 1
'use strict';
var Mustache = require('mustache');
var view = {test: 'div content', multiple : ['foo', 'bar'], multiple_2 : ['hello', 'world']};
var template = '<div>{{test}}</div><ul>{{#multiple}}<li>{{.}}</li>{{/multiple}}</ul><ul>{{#multiple_2}}<li>{{.}}</li>{{/multiple_2}}</ul>';
var output = Mustache.render(template, view);
console.log(output);
Beispiel 2
'use strict';
var Mustache = require('mustache');
var view = {test: 'div content', multiple : [{name: 'foo', gender: 'male'}, {name: 'bar', gender: 'female'}], multiple_2 : [{text: 'Hello', append: '**', prepend: '**'}, {text: 'World', append: '**', prepend: '**'}]};
var template = '<div>{{test}}</div><ul>{{#multiple}}<li>Hello my name is {{name}}. And I am {{gender}}</li>{{/multiple}}</ul><ul>{{#multiple_2}}<li>{{prepend}}_{{text}}_{{append}}</li>{{/multiple_2}}</ul>';
var output = Mustache.render(template, view);
console.log(output);
Speichern Sie für den Testlauf die obigen Beispiele in der Datei 'test.js' und führen Sie den folgenden Befehl in der Befehlszeile aus
nodejs test.js
Ich glaube nicht, dass Schnurrbart das kann! (überraschend) Sie können eine Liste von Objekten durchlaufen und dann auf die Attribute jedes Objekts zugreifen, aber Sie können scheinbar nicht über eine einfache Liste von Werten iterieren!
Sie müssen Ihre Liste also in Folgendes umwandeln:
[ {"value":"foo"},{"value":"bar"},{"value":"baz"} ]
und dann wäre Ihre Vorlage:
<ul>
{{#the_list}}
<li>{{value}}</li>
{{/the_list}}
</ul>
Für mich scheint dies ein ernstes Problem mit Moustache zu sein - jedes Vorlagensystem sollte in der Lage sein, eine Liste einfacher Werte zu durchlaufen!
Mustache.render('<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>',['foo','bar','baz']);