Sto creando una nuova direttiva e mi chiedo come essere avvisato quando angolare rimuove l'elemento dal DOM.
Il mio obiettivo è aggiungere un'animazione jquery quando un elemento viene rimosso.notifica angularJS quando l'elemento viene rimosso
15
A
risposta
26
Se si sta tentando di animare la rimozione dell'elemento è necessario eseguire questa operazione prima che venga rimosso.
Ho creato un fiddle dimostrando questo.
Nella prima sezione si ascolta l'evento $destroy
chiamata angolare agli elementi che vengono rimossi dal DOM.
Nel secondo caso ho creato una direttiva che fadeOut e rimuove l'elemento automatico.
Nel terzo caso la direttiva sbiadisce appena l'elemento e la rimozione viene passata al controller.
Se si desidera sfumare l'elemento rimosso, non è possibile utilizzare la prima opzione.
Tra il secondo e il terzo suggerisco personalmente il terzo perché è più flessibile.
grazie! questo funziona correttamente eccetto per IE8 (non testato su 9) –
ha il problema con IE8? Se l'app non esegue il rendering dei ripetitori probabilmente perché non ho aggiunto "class = 'ng-app'" nell'esempio –
Il problema relativo alla risposta è che si basa sull'associazione alla funzione di clic dell'elemento per la rimozione. Penso che per far funzionare la direttiva senza interferire con il controller/la logica ui, il fadeOut dovrebbe essere attivato direttamente quando l'elemento viene effettivamente rimosso dalla variabile list. Ho provato a inserire il codice di dissolvenza all'interno dell'evento $ destroy, tuttavia poiché l'elemento angolare viene rimosso immediatamente dopo l'azione di splicing nell'elenco di array, l'animazione di dissolvenza non ha il tempo di procedere. Qualche miglioramento dalla tua soluzione sopra? –