2

以下是與以下內容一起使用的jsfiddle。說我有這樣的JSON數據:使用Dust.js進行客戶端模板化的條件語句

{ 
    "people": [ 
     { 
      "name": "Bob", 
      "eye-color": "Green" 
     }, 
     { 
      "name": "Jill", 
      "eye-color": "Blue" 
     }, 
     { 
      "name": "James", 
      "eye-color": "Green" 
     } 
    ] 
} 

如果我想輸出的所有使用dust.js的人的名字,我會成立的模板,像這樣:

<ul> 
    {#people} 
    <li>{name}</li>{~n} 
    {/people} 
</ul> 

但是,如果:

1)我只想輸出「綠色」眼睛的人的名字?有沒有辦法做到這一點使用conditionals in dust

2)我只是想輸出的前兩個名字,無論眼睛的顏色

3)我只是想輸出的第二人的名字,無論眼睛的顏色

編輯:添加第四和第五場景:

4)我只要顯示的第二和第三的名稱(即,索引X到索引Ý

5)我只想輸出前兩名綠眼睛的人(比如上面列出的人比上面列出的人長得多,包括更多綠眼的人不會被顯示)。

還有一個問題:

說我的JSON有一個鍵/值對類似如下:

{ "tags": ["tag1", "tag2", "tag3"] } 

是否有使用{} @eq來檢查它是否包含一個方式例如「tag2」?

回答

1

你可以使所有三個工作,但你將需要使用Dust helpers

1:你需要@eq助手(我也改變從eye-color關鍵eyeColor因爲短線可以迷惑灰塵

<ul> 
    {#people} 
     {@eq key=eyeColor value="Green"} 
      <li>{name}</li>{~n} 
     {/eq} 
    {/people} 
</ul> 

2:你需要的@lt幫手,與$idx沿($idx是當前項的陣列,其中第一項爲0)在索引

<ul> 
    {#people} 
     {@lt key=$idx value=2} 
      <li>{name}</li>{~n} 
     {/lt} 
    {/people} 
</ul> 

3:您需要@eq幫手,與0123沿

<ul> 
    {#people} 
     {@eq key=$idx value=1} 
      <li>{name}</li>{~n} 
     {/eq} 
    {/people} 
</ul> 
+0

太棒了!非常感謝。 2個快速插件:1)如果名稱超過3個,你將如何顯示名稱2-3? 2){〜n}做什麼?代碼似乎沒有它可以正常工作 – dougmacklin

+0

1)您可以嵌套'{@gt key = $ idx value = 0}'{@lt key = $ idx value = 3}' 2)'{〜n}'添加一條新的線,默認情況下,Dust會將其刪除。你可能不需要它。 – smfoote

+0

謝謝smfoote!我又增加了兩個場景和另一個相關的問題,你能否看看,讓我知道這些是否可能?這將是所有,我保證:) – dougmacklin