2015-06-23 29 views

回答

1

你有幾個工具可供你使用,但是你在灰塵和灰燼之間保持交叉兼容的選擇將會強制妥協。

灰燼的dust-helpers中有一些基本的邏輯助手可用,比如{@eq}{@lt},所以我假設你也可以爲Dust導入該庫。

灰塵,做最簡單的方法,這將是:

{#items} 
    {@lt key=$idx value=5}{! output the item info !}{/lt} 
{/items} 

灰塵會遍歷整個列表,但只會輸出項目與指數小於5

灰燼,如你已經從your opened issue看過,不支持$idx,但只有助手形式爲{@idx/} - 並且你不能在另一個助手如{@lt}內使用助手作爲比較器。

所以你的選擇是有限的。如果可以,最好的選擇是將index屬性添加到數組中的對象。但願這是因爲像那樣簡單:

return items.map((item, idx) => { item.idx = idx; return item }); 

然後,你可以寫相同的模板同上,但使用該密鑰對你item

{#items} 
    {@lt key=idx value=5}{! item info woooo !}{/lt} 
{/items} 

如果你沒有API訪問,則下-best選項可能使用Ashes支持的部分上下文。

{> itemTemplate:item[0] /} 
{> itemTemplate:item[1] /} 
{> itemTemplate:item[2] /} 
{> itemTemplate:item[3] /} 
{> itemTemplate:item[4] /} 

在此示例中,partial的上下文一次將設置爲一個項目。比粘貼五次循環的內容要簡單得多。

+0

謝謝。我認爲最簡單的解決方案是修補「$ idx」,然後使用「@ lt」。我之前已經提交了一些補丁,所以這可能是最好的選擇。我需要限制數組的數據源太多,只有少數幾個模板,因此添加'.idx'屬性實際上需要大量的工作和單元測試。 –

相關問題