2012-07-11 11 views
5

Come posso associare una classe a una vista con l'helper #view, se un booleano è FALSE?Visualizza helper: classBinding se boolean è false

// this is working 
{{#view App.MyView controllerBinding="this" classBinding="controller.content.isActive"}} 
    <div>test</div> 
{{/view}} 

// and this is what i want: 
{{#view App.MyView controllerBinding="this" classBinding="!controller.content.isActive:is-not-active"}} 
    <div>test</div> 
{{/view}} 

voglio legare is-not-active come un nome di classe alla vista, se controller.content.isActive è falso.

Posso creare una semplice funzione inverter sulla vista, ma c'è un modo migliore.

risposta

9

UPDATE: La richiesta di pull è stata unita, in modo da poter aggiungere una classe per un valore false come questo:

{{#view App.MyView controllerBinding="this" 
    classBinding="controller.content.isActive:is-active:is-not-active"}} 
{{/view}} 

Se non si desidera aggiungere una classe se il valore è true , è possibile utilizzare la seguente sintassi:

{{#view App.MyView controllerBinding="this" 
    classBinding="controller.content.isActive::is-not-active"}} 
{{/view}} 

vorrei creare una proprietà sulla vista (come già fare con il vostro inverter) e si legano a questo:

Manubrio:

{{#view App.MyView controllerBinding="this" classBinding="isNotActive"}} 
    <div>test</div> 
{{/view}} 

JavaScript:

App.MyView = Ember.View.extend({ 
    isNotActive: Ember.Binding.not('controller.content.isActive') 
}); 

ho creare un Pull Request che non è ancora stata fusa ma risolve questo problema e lo risolverebbe in questo modo:

{{#view App.MyView controllerBinding="this" 
    classBinding="controller.content.isActive:is-active:is-not-active"}} 
    <div>test</div> 
{{/view}} 
+0

Grazie. Questo è esattamente ciò che intendo con un "inverter". Lo userò ora e spero per la richiesta di pull. – Lux