2014-09-17 35 views
9

Ho il seguente codice all'interno di una direttiva e voglio assicurarmi che venga ripulito quando l'oscilloscopio viene distrutto. Ho cercato online così come il codice e mi chiedevo come faccio a smantellare un elemento.separare un elemento angolare

var window = angular.element($window); 
window.bind("resize", function(e){ 
    abc(); 
}); 

Soluzione:

var abc = function() {}; 

var window = angular.element($window); 
window.bind('resize', abc); 

scope.$on('$destroy', function(e) { 
    window.unbind('resize', abc); 
}); 
+3

Non ti pare che non funzioni? – ABOS

risposta

4

UNBIND la funzione da window quando campo di applicazione della direttiva viene distrutta. Quindi nel vostro direttiva, si richiama una funzione di pulizia in caso di evento di distruggere il campo di applicazione:

$scope.$on('$destroy', cleanUp);

creare una funzione cleanUp e la chiamata del unbind function jQuery.

C'è un esempio in this SO entry, ma con la funzione off invece (che sembra simile a unbind, ma non disponibile in jqLite). Anche per questa voce SO, potrebbe essere necessario assegnare un nome alla funzione in quanto sarà necessario fare nuovamente riferimento come parametro nella chiamata unbind.

+2

Le funzioni 'off' e' on' non sono disponibili in ['jqLite'] (https://docs.angularjs.org/api/ng/function/angular.element). Sono nella versione completa di jQuery. 'bind' e' unbind' sono in 'jqLite'. –

+0

Ah grazie per la correzione, buono a sapersi! Non ho mai osservato come uso la versione jQuery completa con Angular. – jlr

+0

quindi ho solo bisogno di chiamare bind e unbind quindi .. grazie darò un tentativo. –

Problemi correlati