Как запустить или условие в шаблоне пыли

Я использую "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}

Плюсы: вы можете добавить больше условий, не меняя шаблон.

Другие вопросы по тегам