1

我正在尝试向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 很陌生,所以我确定我错过了一些东西。

谁能帮我解决这个问题?

4

1 回答 1

2

Dust 旨在成为一种无逻辑的模板语言,或者至少是一种逻辑较少的模板语言。这并不意味着您的应用程序不能有逻辑,而只是应该在您的 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>
于 2012-12-21T15:36:23.833 回答