2014-10-30 39 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