2016-05-22 10 views
11

Al momento ho una certa logica che vorrei semplificare, se possibile, utilizzando solo il modello HTML on (click)angular2 modello div per il check-click se elemento ha classe

Ho un div pieghevole che se cliccato, diventa " attivo"

attualmente il mio div è:

<div class="collapsible-header blue darken-2" (click)="getDataForTable($event)"> 

sto quindi il controllo per l'elenco delle classi sull'elemento

function getDataForTable($event: any){ 
    let classList = $event.target.classList; 

    if(classList.contains("active")){ 
    //do nothing div is closing 
    } else { 
    //get data for table since we are opening the div to show the body 
    } 
} 

Voglio che questa azione (click) venga attivata solo se la classe non è "attiva" (che significa che non si attiva quando si fa clic su "attivo");

Come posso fare questo solo con la sintassi del modello?

+0

Allora, qual è il problema ? Hai provato ad aggiungere la classe attiva in else-branch? – dfsq

+0

funziona, ma voglio sapere se posso avere la logica sul modello solo in modo che l'evento (clic) si attivi solo se non è attualmente "attivo" piuttosto che la funzione attiva ogni clic e io verificando l'evento per vedere se è attivo o no – user2950720

risposta

9

Si dovrebbe essere in grado di farlo in questo modo:

<div class="collapsible-header blue darken-2" 
    (click)="$event.target.classList.contains('active') || getDataForTable($event)"> 

E poi nella funzione si sarebbe solo bisogno di aggiungere classe:

function getDataForTable($event: any) { 
    $event.target.classList.add('active'); 
    // get data for table since we are opening the div to show the body 
} 
10
<div #mydiv 
    class="collapsible-header blue darken-2"  
    (click)="mydiv.classList.contains('xxx') ? getDataForTable($event) : null"> 
Problemi correlati