2014-06-23 25 views
6

Udało mi się utworzyć funkcję, aby pomyślnie przełączać wiersze w tabeli, aby rozwinąć kliknięcie, jednak po ponownym kliknięciu nie będą się one ukrywać. Funkcja w JavaScript jest:Tworzenie zdarzenia przełączającego ng-click

$scope.toggle = function() { 
    return !this.booleanVal; 
}; 

The booleanVal jest jako wartość z pliku json (każdy rząd z jego własna wartość). Następnie w HTML.

<p class="row_description more" ng-click="row.booleanVal = toggle()">{{row.description}</p> 
<div class="check-element animate-show" ng-show="row.booleanVal"> 

To działa dla pierwszego kliknięcia, obracając nie wcześniej fałszywy booleanVal do true jednak robi toggle powrotem do false. Masz pojęcie, co się dzieje?

+1

Co jest 'switch()' – tymeJV

+0

dzięki, że ma być przełącznik() –

Odpowiedz

15

Spróbuj tego:

<p class="row_description more" ng-click="row.booleanVal = !row.booleanVal"> 
    {{row.description} 
</p> 
<div class="check-element animate-show" ng-show="row.booleanVal"></div> 
+0

dowiedziałem się nieaktywny przez mentora, który można też zrobić to w ten sposób 'TestCase.prototype .toggle = function() { this.showMe =! this.showMe; } 'ale twoje rozwiązanie jest również poprawne i działa świetnie. –

+0

Upewnij się, że przypadkiem nie wykonujesz 'row.value! = Row.value' tak jak ja, spodziewając się, że zadziała przez 10 minut, ponieważ to po prostu porównanie, jeśli nie jest równe;) – GONeale

0

Można wykonać jedną z następujących czynności:

  • Korzystając this.row.booleanVal w toggle() funkcji
  • Bezpośrednio przełącz swoją wartość logiczną w dyrektywy ngClick: ng-click="row.booleanVal = !row.booleanVal"
1

Można też użyć operatora warunkowego.

Spróbuj tego:

<p class="row_description more" 
    ng-click="row.booleanVal =row.booleanVal?false:true"> 
    {{row.description}} 
</p> 
<div class="check-element animate-show" ng-show="row.booleanVal"></div>