这是以下内容的jsfiddle。说我有这个JSON数据:
{
"people": [
{
"name": "Bob",
"eye-color": "Green"
},
{
"name": "Jill",
"eye-color": "Blue"
},
{
"name": "James",
"eye-color": "Green"
}
]
}
如果我想使用dust.js输出所有民族的名字,我将像这样设置模板:
<ul>
{#people}
<li>{name}</li>{~n}
{/people}
</ul>
但是,如果:
1)我只想输出“绿色”眼睛的人的名字?有没有一种方法可以使用conditionals in dust?
2)无论眼睛颜色如何,我只想输出前两个名称
3)我只想输出第二个人的名字,而不管眼睛颜色如何
编辑:添加第四和第五种情况:
4)我只想显示第二个和第三个名字(即从索引X到索引Y)
5)我只想输出绿眼睛的人的前两个名字(例如,人的名单比上面显示的3人长得多,其中包括不会显示的更多绿眼的人)。
还有一个问题:
假设我的JSON具有如下所示的键/值对:
{ "tags": ["tag1", "tag2", "tag3"] }
是否有一种方法可以使用{@eq}来检查它是否包含“ tag2”?
最佳答案
您可以使所有这三个都起作用,但是您将需要使用Dust helpers。
1:您需要@eq
助手(我还将键从eye-color
更改为eyeColor
,因为破折号会使Dust感到困惑。
<ul>
{#people}
{@eq key=eyeColor value="Green"}
<li>{name}</li>{~n}
{/eq}
{/people}
</ul>
2:您需要
@lt
助手以及$idx
($idx
是数组中当前项的索引,其中第一项为0)。<ul>
{#people}
{@lt key=$idx value=2}
<li>{name}</li>{~n}
{/lt}
{/people}
</ul>
3:您需要
@eq
助手以及$idx
<ul>
{#people}
{@eq key=$idx value=1}
<li>{name}</li>{~n}
{/eq}
{/people}
</ul>