代码之家  ›  专栏  ›  技术社区  ›  Robert C. Barth

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

  •  12
  • Robert C. Barth  · 技术社区  · 13 年前

    关于灰尘的文件只是 很坏的 ,我已经仔细阅读了我能找到的一切,但不知道这应该如何运作。

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

    1. $idx和$len真的是dust.js中的特价商品吗?
    2. 你能在@if中使用它们吗?如果可以,如何使用?
    3. 假设1=真,$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,John,and Bill are here”(显然,根据需要添加逗号分隔的名称)

    如果$idx和$len特辑按照人们认为的方式工作,这个模板会按照我的意愿工作,但据我所知,我认为$idx或$len(或两者)都没有实现。如果不是,我该如何创建一个符合我要求的模板?

    2 回复  |  直到 13 年前
        1
  •  5
  •   smfoote    13 年前
    1. 是的,他们是《尘埃》中的特殊助手。
    2. 但根据 dustjs-linkedin wiki (在@if部分下),它们不能在基元列表中使用。在这种情况下,必须使用以下语法:

      {@idx}{.}{/idx}
      

    长度也是如此。所以,你的模板会像这个模板一样 jsFiddle

    3.是的,$idx和@idx是零基数。(参见 here 了解更多信息)。

        2
  •  0
  •   vybs    13 年前

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

    {@idx}{.}{/idx}

    现在这种情况已经改变了,即使在基元中$idx和$len也能工作