2014-06-19 7 views
8

Mi chiedo se sia possibile utilizzare un'espressione ternaria nell'attributo ng-clic. Non desidero utilizzare una funzione controller separata, se possibile,.espressione ternaria in ng-clic in angularjs

È un'impostazione di commutazione a due pulsanti: è possibile ottenere un semplice interruttore che funziona, ma non voglio un secondo clic del pulsante "off" per riaccenderlo.

Il ternario in ng-click non funziona (si noti il ​​ternario in ng-classe non lavoro):

<button 
    ng-click="allOn2==true ? allOn2 : !allOn2" 
    ng-class="allOn2==true ? 'btn-green-on' : 'btn-green-off'"> 
ON</button> 

Ecco un jsfiddle più completa: toggler

+0

Perché non usare solo ng-switch? – will

+0

Non ho ancora imparato a conoscere ng-switch ma da un breve controllo sembra più un ng-show/hide a scelta multipla. Grazie – braddo

risposta

4

non si sta facendo nulla con l'espressione ternaria. Per essere utile, assegnarlo:

{{ var1 }} {{ var2}} 
<button 
    ng-click="var1 = (allOn2==true ? allOn2 : !allOn2)" 
    ng-class="{'btn-green-on':allOn2, 'btn-green-off' : !allOn2}"> 
ON</button> 

io non sono sicuro di come è possibile utilizzare le espressioni ternari per ng di classe anche se ...

+1

Ah ... hai ragione. Il mio violino non mostra alcun modello-ng a cui ho legato il valore di allOn, come nel mio progetto. Ma capisco perché ciò che hai suggerito funziona. Penso di essere stato confuso perché la classe ng richiede di "non fare nulla", cioè basta valutare l'espressione per trovare la classe. Ho bisogno di avere il clic su impostare il valore di allOn esplicitamente, che pensavo stesse accadendo solo attraverso la valutazione dell'espressione. Grazie! – braddo

+0

ecco un collegamento al fiddle aggiornato: [link] (http://jsfiddle.net/braddo/DUJrX/16/) – braddo

1

si può usare qualcosa come una soluzione per ternario

ng-click="(AppliedApps!=null && Collapse('CollapsedAppliedApplications')) || 
(AppliedApps.length==0 && Collapse('CollapsedAppliedApplications'))">