2012-08-10 52 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工作