小胡子可以迭代一个顶级数组吗?

gre*_*eim 106 javascript mustache

我的对象看起来像这样:

['foo','bar','baz']
Run Code Online (Sandbox Code Playgroud)

我想使用胡子模板从中产生这样的东西:

"<ul><li>foo</li><li>bar</li><li>baz</li></ul>"
Run Code Online (Sandbox Code Playgroud)

但是怎么样?我真的必须先把它搞得像这样吗?

{list:['foo','bar','baz']}
Run Code Online (Sandbox Code Playgroud)

Dan*_*dan 168

你可以这样做......

Mustache.render('<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>', ['foo','bar','baz']);
Run Code Online (Sandbox Code Playgroud)

它也适用于这样的事情......

var obj = [{name: 'foo'}, {name: 'bar'}];
var tmp = '<ul>{{#.}}<li>{{name}}</li>{{/.}}</ul>';
Mustache.render(tmp, obj);
Run Code Online (Sandbox Code Playgroud)

  • 这些功能是否记录在某处?我没有看到`{{.}}`,`{{1}}`,或胡子中的任何类似物(5). (8认同)
  • 实际上模板首先出现:`Mustache.render('<ul> {{#.}} <li> {{.}} </ li> {{/.}} </ ul>',['foo', '巴', '巴兹']);` (2认同)

And*_*ull 110

今天早上我有同样的问题和一个小实验后,我发现,你可以使用{{}}引用数组的当前元素:

<ul>
  {{#yourList}}
  <li>{{.}}</li>
  {{/yourList}}
</ul>
Run Code Online (Sandbox Code Playgroud)

  • 有谁知道为什么文档中没有这些信息?http://mustache.github.io/mustache.5.html (5认同)
  • 你甚至不需要使用"yourList",你可以只使用"." 这里也是:`Mustache.render('<ul> {{#.}} <li> {{.}} </ li> {{/.}} </ ul>',['foo','bar' , '巴兹']);` (3认同)

Kai*_*ver 5

以@danjordan 的回答为基础,这将满足您的需求:

Mustache.render('<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>',['foo','bar','baz']);
Run Code Online (Sandbox Code Playgroud)

返回:

<ul><li>foo</li><li>bar</li><li>baz</li></ul>
Run Code Online (Sandbox Code Playgroud)