Ember HTMLBars内联组合条件

时间:2015-09-04 07:34:13

标签: ember.js handlebars.js htmlbars

当试图在带有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助手检查几种情况的唯一方法吗?

感谢您的支持!

1 个答案:

答案 0 :(得分: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>