我有一个具有多个属性的对象,即 propA、propB、propC 和 propD。我想编写一个条件,用 OR 检查多个参数,如下所示。
{@if cond="'{obj.propA}'.length > 0 || '{obj.propB}'.length > 0 || '{obj.propC}'.length> 0} ... {/if }
现在,由于 @if 已被弃用,我如何使用 eq 或 select 编写等效的代码。或者是否有一个新的助手可以用于这种情况。
我有一个具有多个属性的对象,即 propA、propB、propC 和 propD。我想编写一个条件,用 OR 检查多个参数,如下所示。
{@if cond="'{obj.propA}'.length > 0 || '{obj.propB}'.length > 0 || '{obj.propC}'.length> 0} ... {/if }
现在,由于 @if 已被弃用,我如何使用 eq 或 select 编写等效的代码。或者是否有一个新的助手可以用于这种情况。
我假设您正在测试的道具是字符串。
这个例子需要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}
select 最近使用 @any 和 @none 进行了扩展,可让您执行多个 OR 逻辑。请注意,.length 仅适用,因为已弃用的 @if 使用 eval。灰尘测试使用存在/不存在,所以我认为你可以避免使用 .length。
如果您仍然喜欢 @if,请参阅https://github.com/rragan/dust-motes/tree/master/src/helpers/control/if以获取不使用 eval 的解释版本。