我的目标是这样的:
['foo','bar','baz']
我想用一个小胡子模板来制作这样的东西:
"<ul><li>foo</li><li>bar</li><li>baz</li></ul>"
但要怎么做,我真的要先把它变成这样吗?
{list:['foo','bar','baz']}
我不认为胡子可以做到这一点! (令人惊讶) 您可以遍历一个对象列表,然后访问每个对象的属性,但似乎不能遍历一个简单的值列表!
因此,你必须将你的列表转换为:
[ {"value":"foo"},{"value":"bar"},{"value":"baz"} ]
然后你的模板就是:
<ul> \{\{#the_list}} <li>\{\{value}}</li> \{\{/the_list}} </ul>
对我来说,这似乎是 Mustache 的一个严重问题——任何模板系统都应该能够循环遍历一个简单值列表!
今天早上我遇到了同样的问题,经过一些实验,我发现您可以使用\{\{}}引用数组的当前元素:
<ul> \{\{#yourList}} <li>\{\{.}}</li> \{\{/yourList}} </ul>
你可以这样做..。
Mustache.render('<ul>\{\{#.}}<li>\{\{.}}</li>\{\{/.}}</ul>', ['foo','bar','baz']);
它也适用于这样的事情..。
var obj = [{name: 'foo'}, {name: 'bar'}]; var tmp = '<ul>\{\{#.}}<li>\{\{name}}</li>\{\{/.}}</ul>'; Mustache.render(tmp, obj);
Building on @danjordan's answer, this will do what you want:
Mustache.render('<ul>\{\{#.}}<li>\{\{.}}</li>\{\{/.}}</ul>',['foo','bar','baz']);
返回:
<ul><li>foo</li><li>bar</li><li>baz</li></ul>
以下是在模板中呈现多维数组的示例:
例子一
'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);
例子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.js”的文件中,在命令行中运行以下命令
nodejs test.js
对于名为 Strengths的数组,最简单的解决方案是:
Strengths
{ "ViewModel": { "StrengthsItems": { "Strengths": ["Dedicated", "Resourceful", "Professional", "Positive"] } } }
对我来说有如下魅力:
\{\{#ViewModel.StrengthsItems}} <p class="p4">\{\{Strengths}}</p> \{\{/ViewModel.StrengthsItems}}