【问题标题】:dustjs OR condition over multiple parameters多个参数的dustjs OR条件
【发布时间】:2015-10-27 04:31:41
【问题描述】:

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

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

既然@if 在尘埃中已被弃用,我如何用eq 或select 编写一个等价的。或者有没有新的助手可以用于这种情况。

【问题讨论】:

    标签: node.js template-engine dust.js dust-helpers


    【解决方案1】:

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

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

    您可以像这样使用@rragan 提到的{@any}{@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}
    

    【讨论】:

    • 正是我想要的。非常感谢。在这里stackoverflow.com/questions/29140924/…也找到了相同的答案。
    • 我还应该补充一点,如果您必须经常这样做,您应该编写一个上下文助手来为您完成这项工作。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-02-20
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 2020-05-22
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多