11

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

我在假设的特殊值 $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 (或两者)都已实施。如果不是,我该如何创建一个模板来满足我的需求?

4

2 回答 2

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

    {@idx}{.}{/idx}
    

同样适用于长度。因此,您的模板类似于此jsFiddle中的模板。

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

于 2012-08-12T20:49:01.653 回答
0

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

{@idx}{.}{/idx}

现在这种情况发生了变化,即使在原语中 $idx 和 $len 也有效

于 2012-09-12T02:27:10.870 回答