2012-08-10 25 views
10

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

我遇到了这个问题,假设特殊值$ idx和$ len,如果我猜对了,它会返回当前索引,同时遍历一个类似数组的部分和所述数组部分的长度。我有我想要锻炼格式的模板的@if条件(多实际上),和值只是没有接近我可以告诉大家的工作,使我有以下问题:

  1. dust.js中是否有$ idx和$ len的实际特价?
  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} 

什么它应该做的事:

  • 如果有一个人,使字符串 “杰克是在这里。”
  • 如果有两个人,请呈现字符串“杰克和约翰在这里”。
  • 如果有三个或更多人,请呈现字符串“杰克,约翰和比尔在这里。” (显然,添加必要的逗号分隔的名字)

如果$ IDX和$ len个特别的工作方式也不会想到他们的工作,这个模板会做什么,我想它,尽可能接近我可以告诉,但是,我不认为$ idx或$ len(或两者)都实现。如果他们不是,我该如何创建一个我想要的模板?

回答

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

    {@idx}{.}{/idx} 
    

同样适用于长度。所以,你的模板就像这个jsFiddle中的模板一样。

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

+0

极大评论{} @smfoote – JAiro 2012-08-13 14:59:17

+0

小提琴中有一个小错误...检查是否需要检查=== 0,而不是1.否则,完美,谢谢! – 2012-08-17 14:56:33

+0

@ RobertC.Barth谢谢。我更新了更新逻辑的jsFiddle链接。 – smfoote 2012-08-17 22:44:28

0

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

{@idx} {/ IDX}

这已经改变,甚至在原语$ IDX和$ LEN工作