2016-01-20 79 views
1

我在灰尘部分工作,并希望显示一个固定的标题,如果条件得到满足。可能优化这种灰尘“逻辑”?

首先,我想知道用户是否说他们在给定的城市工作。如果他们不在我列表中的任何城市,我想不显示任何内容...除非他们住在夏威夷。然后我想要显示相同的标题。

{@select key=workingCity} 
    {@eq value=1}Fixed Header{/eq} {! Pittsburgh !} 
    {@eq value=2}Fixed Header{/eq} {! Paris !} 
    {@eq value=3}Fixed Header{/eq} {! Phoenix !} 
    {@default} 
    {@eq key=state value=50} {! Hawaii !} 
     Fixed Header 
    {/eq} 
    {/default} 
{/select} 

有没有什么方法可以让我避免把“固定头”在四个不同的位置?

我知道我可以在里面引用另一个带有特定标题的部分......但是我需要将这个部分参考放在四个位置!

这是因为它得到优化吗?

回答

2

如果您使用的粉尘和助尘器版本不够新,您可以使用新的{@any}{@none}帮助程序 - 它们完全适用于此用例。

{@select key=workingCity} 
    {@eq value=1/} {! Pittsburgh !} 
    {@eq value=2/} {! Paris !} 
    {@eq value=3/} {! Phoenix !} 
    {@any}Fixed Header{/any} 
    {@none} 
    {@eq key=state value=50} {! Hawaii !} 
     Fixed Header 
    {/eq} 
    {/none} 
{/select} 

这会将您带到标题的两个实例,这可能已经足够好了。这些助手的文档在Dust Helpers

您还可以将模板中的更多逻辑带入上下文助手,这是Dust非常擅长的。这样,逻辑仍然在Javascript中,而模板仅用于显示。

{#showFixedHeader} 
    Fixed Header 
{:else} 
    Optionally something else! 
{/showFixedHeader} 

而在你的背景:

{ 
    "showFixedHeader": function(chunk, context) { 
    var workingCity = context.get('workingCity'); 
    var state = context.get('state'); 
    return [1,2,3].indexOf(workingCity) > -1 || state === 50; 
    } 
} 

现在你的模板是超级可读的,如果添加第四个城市的模板没有做任何改动。

+0

非常感谢!必须使用惊人的{any}和{none}标签,因为我无法访问我的环境中的模板环境。这就是说,我对结果很满意!非常感谢! – Rydash