在dust.js条件语句中$ idx和$ len

时间:2012-08-10 22:29:44

标签: dust.js

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

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

  1. 在dust.js中是$ idx和$ len实际特价吗?
  2. 你能在@if中使用它们吗?若然,怎么做?
  3. 假设1 =真,那么$ idx是否从零开始?
  4. 这是我的模板:

    {#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,John和Bill放在这里”。 (显然,根据需要添加以逗号分隔的名称)

    如果$ idx和$ len特价的工作方式会让人觉得它们有效,那么这个模板就会按照我的意愿行事,但是,我不认为$ idx或$ len(或两者)都已实现。如果不是,我如何创建一个符合我想要的模板?

2 个答案:

答案 0 :(得分:5)

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

    {@idx}{.}{/idx}
    
  3. 同样适用于长度。所以,你的模板就像这个jsFiddle中的模板。

    3.是的,$ idx和@idx基于零。 (有关详细信息,请参阅here。)

答案 1 :(得分:0)

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

{@ IDX} {} {/ IDX}

现在已经发生了变化,甚至在基元中,$ idx和$ len工作