这是以下内容的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>

10-01 01:39