【问题标题】:$idx and $len in a dust.js conditional statementdust.js 条件语句中的 $idx 和 $len
【发布时间】:2012-08-10 22:29:43
【问题描述】:

关于灰尘的文档只是糟糕,我已经仔细阅读了我可能找到的所有内容,但无法弄清楚它应该如何工作。

我在假设的特殊值 $idx 和 $len 上遇到了这个问题,如果我猜对了,它会在迭代类似数组的部分和所述类似数组的部分的长度时返回当前索引。我有一个@if 条件(实际上是多个),我正在尝试锻炼以格式化模板,而这些值并没有尽我所能告诉我,这让我想到了以下问题:

  1. $idx 和 $len 在dust.js 中是真正的特价商品吗?
  2. 您可以在@if 中使用它们吗?如果可以,如何使用?
  3. 假设 1=true,$idx 是从零开始的吗?

这是我的模板:

{#myArray}
  {name}{@sep}, {/sep}{@if cond="('{$idx}' == '{$len} - 2')"}and {/if}{@if cond="('{$idx}' == '{$len} - 1')"}{@if cond="('{$len}' == '1')"} is {:else} are {/if}here.{/if}
{/myArray}

它应该做什么:

  • 如果只有一个人,则呈现字符串“Jake is here”。
  • 如果有两个人,则呈现字符串“Jake and John are here”。
  • 如果有三个或更多人,则呈现字符串“Jake, John, and Bill are here”。 (显然,根据需要添加逗号分隔的名称)

如果 $idx 和 $len 特价商品按照人们认为的方式工作,那么这个模板会做我想做的事,尽我所能,但是,我不认为 $idx 或 $ len(或两者)都已实现。如果不是,我该如何创建一个可以满足我需求的模板?

【问题讨论】:

    标签: dust.js


    【解决方案1】:
    1. 是的,他们是 Dust 中的特殊帮手。
    2. 但是根据dustjs-linkedin wiki(在@if 部分下),它们不能在原语列表中使用。在这种情况下,您必须使用以下语法:

      {@idx}{.}{/idx}
      

    同样适用于长度。所以,你的模板类似于jsFiddle 中的模板。

    3.是的,$idx 和@idx 从零开始。 (有关更多信息,请参阅here)。

    【讨论】:

    • 小提琴中有一个小错误...检查 is/are 需要检查是否 === 0,而不是 1。否则,完美,谢谢!
    • @RobertC.Barth 谢谢。我已经用更新的逻辑更新了 jsFiddle 链接。
    【解决方案2】:

    但根据dustjs-linkedin wiki(在@if 部分下),它们不能在原语列表中使用。在这种情况下,您必须使用以下语法:

    {@idx}{.}{/idx}

    现在这已经改变了,即使在原语中 $idx 和 $len 也可以工作

    【讨论】:

      猜你喜欢
      • 2014-03-11
      • 1970-01-01
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多