2014-06-19 17 views
8

Zastanawiam się, czy możliwe jest użycie potrójnego wyrażenie w atrybucie ng-click. Nie chcę używać osobnej funkcji kontrolera, jeśli to możliwe.Ternary Wyrażenie w ng-click w angularjs

Przełącznik z dwoma przyciskami - mogę uzyskać prosty przełącznik, ale nie chcę drugiego kliknięcia przycisku "wyłącz", aby ponownie włączyć.

Trójskładnikowy w NG-kliknięcie nie działa (uwaga trójkątny, na NG-klasy działa):

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

Oto bardziej kompletny jsfiddle: toggler

+0

Dlaczego po prostu nie używać przełącznika Ng? – will

+0

Nie dowiedziałem się jeszcze o Ng-switch, ale z krótkiego wyboru wydaje się bardziej jak wybór wielokrotny. Dzięki – braddo

Odpowiedz

4

Nie robią nic z potrójne wyrażenie. Na to, aby być użytecznym, przypisać go:

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

Nie jestem pewien, w jaki sposób można użyć wyrażenia dla trójskładnikowych NG-klasy mimo ...

+1

Ach ... masz rację. Moje skrzypce nie pokazują żadnego modelu ng, do którego przypisałem wartość allOn, tak jak w moim projekcie. Ale widzę, dlaczego to, co sugerujesz, działa. Myślę, że byłem zdezorientowany, ponieważ klasa ng wymaga od ciebie "nic nie rób", tj. Po prostu przetestuj wyrażenie, aby znaleźć klasę. Muszę mieć ustawiony na kliknięcie wartość allOn jawnie, co myślałem, że właśnie dzieje się poprzez ocenę wyrażenia. Dzięki! – braddo

+0

Oto link do zaktualizowanego skrzypka: [link] (http://jsfiddle.net/braddo/DUJrX/16/) – braddo

1

Można użyć coś tak jak obejście potrójnego

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