2015-09-04 76 views
1

當試圖具有與Ember 1.13 HTMLBars一個簡單的條件樣式級分配,下面的代碼做了偉大的工作:灰燼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

你會希望自己的幫手,讓我們把它叫做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> 
+0

嗨@Kitler,感謝您的快速響應。爲了讓你的例子工作,html元素中的參數必須改爲「valid」和「invalid」,而不是「active」和「inactive」 - 並且它像charme一樣運行。謝謝。希望在HTMLBars中包含一個版本,因爲這似乎是一個常見的用例。 –

+0

Oups,不錯的地方開始寫傭工的選擇傳遞其他操作數錯過了它xx –

+1

@ L-Ray它確實很常見,但它可以用很多方式處理,另一個是項目的組件,並讓它處理邏輯我們也有能力製作我們自己的定製助手。 –