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.