Oggi non riesco a trovare la risposta attraverso una domanda angolare molto "dal naso di coniglio". Dai documenti $scope
, è possibile registrare un gestore di eventi su "$destroy"
, chiamato prima della distruzione dell'ambito. In questo modo, è possibile annullare la registrazione gestori di eventi in questo modo:
var deregister = $scope.$on('myCustomEvent', function() {
// do some crazy stuff
});
$scope.$on('$destroy', function() {
deregister();
});
Tuttavia, il $scope.$on('$destroy', ...)
necessario creare il proprio gestore. Viene automaticamente distrutto o devi fare qualcosa del genere per distruggerlo?
Sì, viene distrutto - ovviamente se fa riferimento a qualcosa di esterno il gestore stesso (e quindi tutto ciò che ha nella sua chiusura) non verrà deallocato (proprio come ovunque altrove). –
Immagino che le domande di follow-up sarebbero allora (a) è necessario deregenerarlo, e (b) in caso affermativo, è possibile cancellarlo anche nel modo in cui ho scritto sopra? – jdotjdot
Naa, hai solo una ricorsione infinita - non hai bisogno di cancellarla, l'obiettivo viene distrutto. Sono sicuro che presto qualcuno con più tempo farà una risposta decente e dettagliata qui :) –