2014-06-23 6 views
6

Sono stato in grado di creare una funzione per attivare correttamente le righe nella mia tabella di ng per espandere al clic, tuttavia, quando si fa nuovamente clic non si nascondono. La funzione nel JavaScript è:Fare un evento di ng-click

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

il booleanVal è essere un valore dal file json (ogni riga con un proprio valore). Quindi in HTML.

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

Si lavora per il primo clic, trasformando il non precedentemente falso booleanVal a true, però, lo fa tornare a togglefalse. Qualche idea di cosa sta andando storto?

+1

Qual è 'interruttore()' – tymeJV

+0

grazie, che si suppone essere di commutazione() –

risposta

15

Prova questo:

<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

ho scoperto offline attraverso un mentore che anche si può fare in questo modo 'TestCase.prototype .toggle = function() { this.showMe =! this.showMe; } ma la tua soluzione è anche corretta e funziona alla grande. –

+0

Assicurati di non fare casualmente 'row.value! = Row.value 'come ho fatto io, aspettandomi che funzioni per 10 minuti, poiché questo è solo il confronto se non è uguale a;) – GONeale

0

È possibile effettuare una delle operazioni seguenti:

  • Usa this.row.booleanVal in toggle() funzione
  • Direttamente alternare la booleano nella direttiva ngClick: ng-click="row.booleanVal = !row.booleanVal"
1

È inoltre possibile utilizzare un operatore condizionale.

Prova questo:

<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>