2012-07-11 7 views
5

Wie kann ich eine Klasse mit dem #view Helfer an eine View binden, wenn ein Boolean FALSE ist?View helper: classBinding if boolean ist 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}} 

Ich möchte is-not-active als Klassennamen der Ansicht binden, wenn controller.content.isActive falsch ist.

Ich kann eine einfache Wechselrichter-Funktion auf der Aussicht machen, aber ich es gibt einen besseren Weg.

Antwort

9

UPDATE: Die Pull-Request verschmolzen wurde, so dass Sie eine Klasse für einen false Wert wie folgt hinzufügen:

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

Wenn Sie nicht wollen, eine Klasse hinzuzufügen, wenn der Wert true ist können Sie die folgende Syntax verwenden:

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

ich würde eine Eigenschaft auf der Ansicht erstellen (wie Sie bereits tun mit Inverter) und an diese binden:

Lenker:

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

JavaScript:

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

habe ich eine Pull Request schaffen, die verschmolzen wurde noch nicht aber es löst dieses Problem und würde es ähnlich lösen:

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

Danke. Genau das meine ich mit einem "Inverter". Ich werde das jetzt nutzen und hoffe auf die Pull-Anfrage. – Lux

Verwandte Themen