2014-09-17 9 views
9

Mam następujący kod w dyrektywie i chcę się upewnić, że zostanie wyczyszczony, gdy zakres zostanie zniszczony. Sprawdziłem zarówno w Internecie, jak i kod i zastanawiałem się, jak mogę usunąć element.Rozpięcie elementu kątowego

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

Rozwiązanie:

var abc = function() {}; 

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

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

Czy rozpięcie nie działa dla ciebie? – ABOS

Odpowiedz

4

Rozwiążcie funkcję od window gdy zakres dyrektywy dostaje zniszczone. Stąd w dyrektywie, można powołać się oczyścić funkcji na razie oscyloskopu zniszczyć to:

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

Tworzenie cleanUp funkcję i wywołać jQuery unbind function.

Istnieje przykład w this SO entry, ale z funkcją off zamiast (która wygląda podobnie do unbind, ale niedostępna w jqLite). Również dla tego wpisu SO, być może będziesz musiał nazwać swoją funkcję, ponieważ będziesz musiał ponownie ją odnieść jako parametr w wywołaniu unbind.

+2

Funkcje 'off' i' on' nie są dostępne w ['jqLite'] (https://docs.angularjs.org/api/ng/function/angular.element). Są w pełnej wersji jQuery. 'bind' i' unbind' są w 'jqLite'. –

+0

Ah dzięki za poprawkę, dobrze wiedzieć! Nigdy nie zaobserwowałem, ponieważ używam pełnej wersji jQuery z Angular. – jlr

+0

, więc po prostu muszę wywołać bind i rozpiąć, a następnie .. dzięki dam to próba. –

Powiązane problemy