【问题标题】:Ember HTMLBars inline combined conditionsEmber HTMLBars 内联组合条件
【发布时间】:2015-11-30 06:53:38
【问题描述】:

当尝试使用 Ember 1.13 在 HTMLBars 中进行简单的条件样式类分配时,以下代码做得很好:

{{#each items as |item|}}
  <li class="tag {{if item.selected 'active' 'inactive'}}">{{item.key}}</li>
{{/each}}

还有,有没有办法以大写形式组合条件,比如检查另一个条件?类似于以下代码...

{{#each items as |item|}}
  <li class="tag {{if (item.selected or noneSelected) 'active' 'inactive'}}">{{item.key}}</li>
{{/each}}

...或者是通过 Ember 帮助程序检查多个条件的唯一方法?

感谢您的支持!

【问题讨论】:

    标签: ember.js handlebars.js htmlbars


    【解决方案1】:

    你会想要创建自己的助手,我们称之为conditional-or

    import Ember from 'ember';
    
    const { Helper: { helper } } = Ember;
    
    export function conditionalOr(conditions, {valid, invalid}) {
      invalid = invalid || '';
      return conditions.some(elem => elem) ? valid : invalid;
    }
    
    export default helper(conditionalOr);
    

    some() 所做的是遍历数组元素并在满足条件时返回 true。

    您将能够像这样在模板中使用它:

    <li class="tag {{conditional-or item.selected noneSelected valid='active' invalid='inactive'}}">{{item.key}}</li>
    

    【讨论】:

    • 嗨@Kitler,感谢您的快速响应。为了使您的示例正常工作,只需将 html 元素中的参数更改为 validinvalid 而不是 activeinactive - 它运行起来就像一个魅力。谢谢。希望在 HTMLBars 中包含一个包含版本,因为这似乎是一个常见的用例。
    • 哎呀,好地方开始编写带有传递其他操作数选项的助手错过了 x.x
    • @L-Ray 确实很常见但是可以有多种处理方式,还有一种是item的组件,让它处理设置类的逻辑,我们也有能力做我们自己的自定义助手。
    • 将其作为组件的一部分处理是另一种很好的方法。我刚刚发现,您当然可以通过this.get('parameterName') 访问组件内作为参数给出的变量。啊,Ember 有时很棒……
    猜你喜欢
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 2015-06-06
    • 2015-04-18
    • 2016-07-02
    • 1970-01-01
    • 2017-06-07
    相关资源
    最近更新 更多