2013-02-25 46 views
6

當試圖將它們與同一元素上的常規類組合在一起時,我發現條件屬性綁定存在問題。這裏是車把標記我想:將條件類綁定與現有類相結合

<a href="#" class="button" {{bindAttr class="isDirty:dirty:clean"}} {{action save}}>Save</a> 

我期望能夠產生的是:

<a href="#" class="button clean" data-bindattr-3="3" data-ember-action="4">Save</a> 

但什麼是實際發生的是:

<a href="#" class="button" data-bindattr-3="3" data-ember-action="4">Save</a> 

當我修改模型,它正確地生成髒類:

<a href="#" class="button dirty" data-bindattr-3="3" data-ember-action="4">Save</a> 

如果我嘗試後綁定移動類,就會產生條件類,而不是宣佈一個:

<a href="#" {{bindAttr class="isDirty:dirty:clean"}} class="button" {{action save}}>Save</a> 

生成的條件,但不是按鈕類:

<a href="#" class="clean" data-bindattr-3="3" data-ember-action="4">Save</a> 

我要的是使用Handlebars生成組合的聲明類和條件類(無需創建視圖)。有沒有另一種方法來做到這一點?

回答

11

template guides它描述了一種靜態和綁定類一個項目相結合:

如果你需要一個元素具有靜態和束縛類的組合,你應該包括在靜態類綁定屬性列表,以冒號爲前綴。

在你的情況,你會做這樣的事情:

<a href="#" {{bindAttr class=":button isDirty:dirty:clean"}} {{action save}}>Save</a> 

這裏是一個工作示例http://jsbin.com/ixupad/82/edit

+0

謝謝,不知道我是如何錯過的。 – gbabiars 2013-02-25 05:03:45

+0

優秀的方向! :) – 2013-05-03 08:36:27

+0

'bindAttr'別名爲'bind-attr'並且自從 [Ember 1.0 RC8](http://emberjs.com/blog/2013/08/29/ember-1-0-rc8。 HTML#toc_other - 改進)。 – sn3p 2015-06-30 12:51:25

5

由於灰燼1.11的你可以使用inline-if-syntax

<a href="#" class="button {{if isDirty 'dirty' 'clean'}}" {{action save}}> 
    Save 
</a>