【问题标题】:Conditional Statements in Client Side Templating with Dust.jsDust.js 客户端模板中的条件语句
【发布时间】:2014-03-11 07:51:41
【问题描述】:

这里有一个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”?

【问题讨论】:

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


    【解决方案1】:

    您可以使这三个都起作用,但您需要使用 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>
    

    【讨论】:

    • 太棒了!非常感谢。 2个快速插件:1)只有当名字超过3个时,你将如何显示名字2-3?和 2) {~n} 做什么?没有它,代码似乎可以正常工作
    • 1) 你可以在{@gt key=$idx value=0} 中嵌套{@lt key=$idx value=3} 2) {~n} 添加一个新行,默认情况下Dust 会去掉该行。你可能不需要它。
    • 感谢 smfoote!我添加了另外两个场景和另一个相关问题,你能看一下并让我知道这些是否可能吗?这就是全部,我保证:)
    • 第 4 方案的处理方式与第 2 方案相同,但使用 @gt 而不是 @lt。第 5 种情况可能很难处理纯灰尘:它涉及修改状态以了解您已经显示了多少。在创建 JSON 时在服务器端执行此操作,或创建自定义除尘助手来执行此操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    相关资源
    最近更新 更多