可以优化此 Dust "logic" 吗?
Possible to optimize this Dust "logic"?
我在 Dust 部分工作,如果满足条件,我想显示一个固定的 header。
首先,我想知道用户是否表示他们在特定城市工作。如果他们不在我列表中的任何城市,我什么也不想显示……除非他们住在夏威夷。然后我想显示相同的 header.
{@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}
有什么办法可以避免将 'Fixed Header' 放在四个不同的位置?
我知道我可以只引用其中包含该特定标题的另一个部分...但是无论如何我都需要将该部分引用放在四个位置!
这是优化到极致了吗?
如果您使用的是足够新版本的 dust 和 dust-helpers,您可以使用新的 {@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}
这使您得到 header 的两个实例,这可能就足够了。这些助手的文档位于 Dust Helpers.
您还可以将模板中的更多逻辑带入 context helper,这是 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;
}
}
现在您的模板可读性极强,如果您添加第四个城市,模板根本不需要更改。
我在 Dust 部分工作,如果满足条件,我想显示一个固定的 header。
首先,我想知道用户是否表示他们在特定城市工作。如果他们不在我列表中的任何城市,我什么也不想显示……除非他们住在夏威夷。然后我想显示相同的 header.
{@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}
有什么办法可以避免将 'Fixed Header' 放在四个不同的位置?
我知道我可以只引用其中包含该特定标题的另一个部分...但是无论如何我都需要将该部分引用放在四个位置!
这是优化到极致了吗?
如果您使用的是足够新版本的 dust 和 dust-helpers,您可以使用新的 {@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}
这使您得到 header 的两个实例,这可能就足够了。这些助手的文档位于 Dust Helpers.
您还可以将模板中的更多逻辑带入 context helper,这是 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;
}
}
现在您的模板可读性极强,如果您添加第四个城市,模板根本不需要更改。