2

这是以下内容的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)我只想输出“绿色”眼睛的人的名字?有没有办法在灰尘中使用条件来做到这一点?

2)我只想输出前两个名字,不管眼睛颜色

3)我只想输出第二个人的名字,不管眼睛颜色

编辑:添加第四和第五个场景:

4)我只想显示第二个和第三个名字(即索引X到索引Y

5)我只想输出绿眼睛的人的前两个名字(比如说人的列表比上面显示的3个长得多,包括更多不会显示的绿眼睛的人)。

还有一个问题:

假设我的 JSON 有一个键/值对,如下所示:

{ "tags": ["tag1", "tag2", "tag3"] }

例如,有没有办法使用 {@eq} 检查它是否包含“tag2”?

4

1 回答 1

1

您可以使所有三个工作,但您将需要使用 Dust helpers

1:您需要@eq助手(我还将键从 更改eye-coloreyeColor因为破折号会混淆 Dust。

<ul>
    {#people}
        {@eq key=eyeColor value="Green"}
            <li>{name}</li>{~n}
        {/eq}
    {/people}
</ul>

2:你需要@lthelper,以及$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>
于 2014-02-12T19:56:47.130 回答