客户端模板中的条件语句使用Dust.js进行模板化

时间:2014-02-12 19:02:50

标签: jquery linkedin conditional-statements dust.js client-side-templating

以下是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更长,包括更多不会显示的绿眼人)。 / p>

还有一个问题:

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

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

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

1 个答案:

答案 0 :(得分:1)

您可以完成所有这三项工作,但您需要使用Dust helpers

1:您需要@eq帮助器(我还要将密钥从eye-color更改为eyeColor,因为破折号可能会混淆灰尘。

<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>