Yanıtlar:
Böyle yapabilirsin ...
Mustache.render('<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>', ['foo','bar','baz']);
Bunun gibi şeyler için de işe yarar ...
var obj = [{name: 'foo'}, {name: 'bar'}];
var tmp = '<ul>{{#.}}<li>{{name}}</li>{{/.}}</ul>';
Mustache.render(tmp, obj);
{{.}}
, {{1}}
ya bıyıklı (5) benzer şey.
Bu sabah da aynı sorunu yaşadım ve küçük bir deneyden sonra, bir dizinin geçerli öğesine başvurmak için {{.}} Kullanabileceğinizi keşfettim:
<ul>
{{#yourList}}
<li>{{.}}</li>
{{/yourList}}
</ul>
Mustache.render('<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>',['foo','bar','baz']);
Mustache.render('<ul>{{#.}}{{.}}{{/.}}</ul>', {yourList: ['foo','bar','baz']});
@ Danjordan'ın cevabına dayanarak, bu istediğinizi yapacak:
Mustache.render('<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>',['foo','bar','baz']);
dönen:
<ul><li>foo</li><li>bar</li><li>baz</li></ul>
{a:'foo',b:'bar',c:'baz'}
nesneler için değil diziler için çalışır, bunun için imkansızdır ... Nesneler üzerinde yineleme yaparken anonim referanslar nasıl yapılır?
Aşağıda, bir şablonda çok boyutlu dizi oluşturmak için örnekler verilmiştir:
örnek 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);
Örnek 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);
Test çalışması için, yukarıdaki örnekleri 'test.js' adlı dosyaya kaydedin, komut satırında aşağıdaki komutu çalıştırın
nodejs test.js
Bıyığın bunu yapabileceğini sanmıyorum! (şaşırtıcı bir şekilde) Bir nesne listesi üzerinde yineleme yapabilir ve ardından her nesnenin özniteliklerine erişebilirsiniz, ancak basit bir değerler listesi üzerinde yineleme yapamazsınız!
Yani, listenizi şuna dönüştürmelisiniz:
[ {"value":"foo"},{"value":"bar"},{"value":"baz"} ]
ve sonra şablonunuz şöyle olur:
<ul>
{{#the_list}}
<li>{{value}}</li>
{{/the_list}}
</ul>
Bana göre, bu Mustache ile ilgili ciddi bir sorun gibi görünüyor - herhangi bir şablon sistemi basit değerler listesi üzerinde döngü yapabilmelidir!
Mustache.render('<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>',['foo','bar','baz']);