2

我有一个具有多个属性的对象,即 propA、propB、propC 和 propD。我想编写一个条件,用 OR 检查多个参数,如下所示。

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

现在,由于 @if 已被弃用,我如何使用 eq 或 select 编写等效的代码。或者是否有一个新的助手可以用于这种情况。

4

2 回答 2

3

我假设您正在测试的道具是字符串。

这个例子需要dustjs-helpers >= 1.6。

您可以像这样使用@rragan 提到的{@any}and助手:{@none}

{@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}
于 2015-10-27T17:15:27.053 回答
2

select 最近使用 @any 和 @none 进行了扩展,可让您执行多个 OR 逻辑。请注意,.length 仅适用,因为已弃用的 @if 使用 eval。灰尘测试使用存在/不存在,所以我认为你可以避免使用 .length。

如果您仍然喜欢 @if,请参阅https://github.com/rragan/dust-motes/tree/master/src/helpers/control/if以获取不使用 eval 的解释版本。

于 2015-10-27T15:07:04.347 回答