2013-12-13 18 views
1

所以我有一個這樣的對象{ 「TEMPLATENAME」: 「MyTemplate的」, 「數據」:{ 「一」:1}}在dustjs中,我可以在模板內放置一個模板,其中的內部模板是用字符串文字在部分標記中定義的?

這裏是我的模板:

{templateName} 
{>"{templateName}":data/} 

這不渲染但(沒有錯誤消息)......但是,它的工作原理當我把它改成這樣:

{templateName} 
{>"myTemplate":data/} 

它呈現這樣的觀點:

myTemplate 
[then here it shows myTemplate, rendered with data passed to it] 

它完美呈現,甚至在頂部顯示正確的模板名稱。我認爲把關鍵字放在引號中會有效,但我想我誤解了dustjs指南。我怎樣才能做到這一點?

回答

2

經過一番小小的挖掘,我相信我發現了這個問題。通過使用語法{>"{templateName}":data/},您正在將上下文從root更改爲data。發生這種情況時,Dust嘗試解析模板名稱時不再可訪問templateName。所以,Dust最終搜索一個名爲""的模板。我已經爲這個bug提交了一個issue。如果我說要寫一本名爲「灰塵:好的部分」的書,我會把背景排除在外(例如{#myData:myContext})。我發現他們造成的問題比他們解決的還要多。

作爲一種變通方法,您可以使用此語法:

{templateName} {>"{templateName}"/}

然後你的 「MyTemplate的」 需要做的是這樣的:

{data.one}

這裏是一個example這工作。

+0

很好的答案......我想這意味着我也可以把我的templateName放在數據對象中。知道那裏有dust.js專家很有趣。 –

+0

如果我真的需要使用contexts嘉豪,你對我應該使用的模板引擎有什麼建議嗎? –

+0

灰塵在切換上下文方面做得很好,只是不使用冒號標記。如果你想切換上下文,你可以使用'{#data} {one} {/ data}'而不是'{data.one}'。 – smfoote

相關問題