2014-10-30 41 views
-1

是否可以在灰塵中包含可選的部分?比方說,我這樣定義一個佈局:DustJS中的可選部分

<div> 
    {>"{module}"/> 
</div> 

我一直在定義快捷的res.locals對象模塊。但是,如果我忘了定義一個模塊,或者我實際上想要一個默認模塊供我使用時沒有定義模塊呢?更糟糕的是,如果我定義了一個,但它是不正確的模塊,那意味着視圖文件夾中沒有模板文件,並且該模塊的名稱是?我不希望用戶看到的醜陋的錯誤消息,這似乎是這樣的:

Error: ENOENT, open 'view_path\{module}.dust' 

其中{module}是模塊的名稱,或者如果我沒有指定res.locals.module一個空字符串。我是否應該使用try-catch塊(甚至不知道如何在dust中執行這些操作),還是有一種使模板可選的方法,而不是必需的? 注意:該模板將是可選的,但module變量將(通常)仍然是一個字符串。看起來dust部分是可選的,這意味着如果確切的鍵不可用,該部分根本不包括在內。例如,說我有上下文{friends: [{name: "Harry"}, {name: "Ron"}, {name: "Hermione"}]}。如果我定義的部分:

{#friends} 
    {name} is {age} years old. 
{/friends} 

它將輸出

Harry is years old. 
Ron is years old. 
Hermione is years old. 

公告有在每種情況下,在那裏,如果我們定義的任何年齡的ageisyears之間的2個空格。如果包含此功能,那麼dustLinkedIn的原創者是不是認爲不需要偏分量? 如何在dust中指定可選的部分?

+0

雙空格的東西應該沒什麼大不了的,因爲瀏覽器只會渲染一個空格。我相信你可以調整句柄代碼來添加任何處理你想要的缺失部分。 – jfriend00 2014-10-30 01:41:38

+0

我不打算把這些部分的代碼放到我的應用程序中,所以我沒有測試它以確保它有2個空格。我只是假設。無論如何,我根本不關心這兩個空間,所以它確實是「沒什麼大不了的」。那只是一個例子。 – trysis 2014-10-30 01:48:43

+0

什麼是downvote? – trysis 2014-12-14 04:53:00

回答

0

您可以使用條件像這樣,

<div> 
    {?module} 
    {>"{module}"/> 
    {:else} 
    {>"{YourDefaultPartial}"} 
    {/module} 
</div> 

{module}或者是undefinedempty stringfalsey,這不錯。

但是,如果其string指向partial不存在,它會引發錯誤。希望這可以幫助。

+0

這沒有幫助。我的'module'變量通常被定義爲一個字符串,但我不希望頁面必須在那裏。 – trysis 2014-11-03 16:53:03