条件模板

时间:2012-12-21 12:13:30

标签: javascript json dust.js

我正在尝试为dustjs模板添加一些逻辑,但我正在努力将它们放在一起。

我的Json代码如下所示:

{
    "names": [{
        "name": "User 1",
        "isSir": true
    }, {
        "name": "User 2",
        "isSir": true
    }, {
        "name": "User 3",
        "isSir": true
    }, {
        "name": "User 4",
        "isSir": false
    }, {
        "name": "User 5",
        "isSir": false
    }, {
        "name": "User 6",
        "isSir": false
    }]
}

然后我想循环这个,并且只显示“isSir”的每个变体的第一个项目。剩下的项目将用CSS隐藏,所以我最终应该看起来像:

  • 用户1 (显示)
  • 用户2 (隐藏)
  • 用户3 (隐藏)
  • 用户4 (显示)
  • 用户5 (隐藏)
  • 用户6 (隐藏)

我尝试使用{@if cond的变体只抓住那些"Sir"的人,然后抓住其他人,但因为我还需要保持计数,所以我知道我在哪里然后我开始尝试使用{@select key=

我对Dust很新,所以我确定我错过了什么。

有人能帮我一把吗?

1 个答案:

答案 0 :(得分:2)

尘埃是一种无逻辑的模板语言,或者至少是一种逻辑较少的模板语言。这并不意味着您的应用程序不能拥有逻辑,而只是应该在您的JSON中提供显示逻辑。

使用您当前的JSON在Dust中无法解决您的问题,但如果您将JSON更改为:

{
    "names": [{
        "name": "User 1",
        "isSir": true,
        "isHidden": false
    }, {
        "name": "User 2",
        "isSir": true,
        "isHidden": true
    }, {
        "name": "User 3",
        "isSir": true,
        "isHidden": true
    }, {
        "name": "User 4",
        "isSir": false,
        "isHidden": false
    }, {
        "name": "User 5",
        "isSir": false,
        "isHidden": true
    }, {
        "name": "User 6",
        "isSir": false,
        "isHidden": true
    }]
}

然后你可以使用这样的模板:

<ul>
{#names}
  <li{?isHidden} class="hidden"{/isHidden}>
    {?isSir}Sir {/isSir}{name}
  </li>
{/names}
</ul>