2013-02-25 2 views
6

Sto rilevando un problema con i binding di attributi condizionali quando si tenta di combinarli con una classe regolare sullo stesso elemento. Ecco il markup manubrio che sto cercando:Combinazione di classi condizionali con classe esistente

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

Quello che mi aspetto di essere generato è:

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

Ma ciò che è effettivamente generato è:

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

Quando ho modificare il modello , genera correttamente la classe dirty:

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

Se provo spostare la classe dopo la rilegatura, genererà la classe condizionale piuttosto che quella dichiarata:

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

genera la classe condizionale ma non pulsante:

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

Quello che voglio è per farlo generare sia la classe dichiarata combinata che la classe condizionale usando solo Handlebars (senza dover creare una vista). c'è un altro modo per fare ciò?

risposta

11

Nel template guides si descrive un modo per combinare classi statiche e legati per un oggetto:

Se avete bisogno di un elemento di avere una combinazione di classi statiche e legati, si dovrebbe includere la classe statica in lista di proprietà vincolate, precedute da due punti.

Nel tuo caso si dovrebbe fare qualcosa di simile:

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

Ecco un esempio di lavoro http://jsbin.com/ixupad/82/edit

+0

Grazie, non sono sicuro di quanto mi sia mancato. – gbabiars

+0

Ottima direzione! :) –

+0

'bindAttr' è sottoposto a alias a' bind-attr' e soft-deprecato dal [Ember 1.0 RC8] (http://emberjs.com/blog/2013/08/29/ember-1-0-rc8. html # toc_other-miglioramenti). – sn3p

5

Come di Ember 1.11 è possibile utilizzare inline-if-syntax

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