2016-01-20 3 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.

Вы также можете вывести еще больше логики из вашего шаблона в помощник контекста , что является чем-то большим, чем пыль. Таким образом, логика остается в 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

Смежные вопросы