Как запустить или условие в шаблоне пыли
Я использую "dustjs-helpers": "1.6.0"
, с "dustjs-linkedin": "^2.6.0"
,
В моем шаблоне мне нужно проверить условие ИЛИ, как
if( cherry === true || berry === true)
path/to/template1/
else
path/to/template2/
Как мне сделать это с помощью помощников?
1 ответ
Поскольку вы тестируете две разные переменные, вам понадобятся два разных теста на истинность.
Вы можете поместить эту логику в свой шаблон или в небольшого помощника. Я покажу вам оба пути.
Давайте предположим, что ваш контекст выглядит так:
{
"cherry": false,
"berry": true
}
Шаблонный метод
Этот метод требует dustjs-помощников>= 1.6.2
Вы должны будете включить два {@eq}
чеки. Поскольку вы используете такую актуальную версию Dust, у вас есть доступ к {@any}
а также {@none}
хелперы.
{@select key=cherry}
{@eq value="true" type="boolean"/}
{@eq key=berry value="true" type="boolean"/}
{@any}path/to/template1{/any}
{@none}path/to/template2{/none}
{/select}
Вы должны вручную переопределить key
в berry
во втором тесте правды.
Менее удивительный шаблонный метод
Работает со всеми версиями dustjs-помощников.
{@eq key=cherry value="true" type="boolean"}
path/to/template1
{:else}
{@eq key=berry value="true" type="boolean"}
path/to/template1
{:else}
path/to/template2
{/eq}
{/eq}
Минусы: это не масштабируется, это некрасиво, оно повторяет данные.
Вспомогательный метод
Совсем не требует пыльных помощников.
{
"cherry": false,
"berry": true,
"isFruit": function(chunk, context) {
return context.get("cherry") || context.get("berry");
}
}
{?isFruit}
path/to/template1
{:else}
path/to/template2
{/isFruit}
Плюсы: вы можете добавить больше условий, не меняя шаблон.