dustjs ИЛИ условие по нескольким параметрам

У меня есть объект с несколькими свойствами, а именно propA, propB propC и propD. Я хочу написать условие с проверкой ИЛИ более одного параметра, как показано ниже.

{@if cond = "'{obj.propA}'. length> 0 || '{obj.propB}'. length> 0 || '{obj.propC}'. length> 0}... {/ if }

Теперь, поскольку @if устарел в пыли, как мне написать эквивалент этого с помощью eq или select. Или есть новый помощник, который я могу использовать для таких сценариев.

2 ответа

Решение

Я предполагаю, что реквизиты, которые вы тестируете, являются строками.

Этот пример требует dustjs-helpers >= 1.6.

Вы можете использовать {@any} а также {@none} помощники, упомянутые @rragan, вот так:

{@select}
  {@ne key=obj.propA value="" /}
  {@ne key=obj.propB value="" /}
  {@ne key=obj.propC value="" /}
  {@any}At least one of the above tests was true. At least one prop is not an empty string.{/any}
  {@none}None of the tests above passed. All the props are empty{/none}
{/select}

select недавно был расширен с помощью @any и @none, что позволяет вам использовать логику множественного ИЛИ. Обратите внимание, что.length работает только потому, что устаревший @if использует eval. Тесты на пыль используют существование / несуществование, поэтому я думаю, что вы можете избежать использования.length.

Если вы все еще предпочитаете @if, см. https://github.com/rragan/dust-motes/tree/master/src/helpers/control/if для интерпретирующей версии, в которой не используется eval.

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