Ho visto molti esempi di direttive, compresi quelli dello AngularUI team, in cui non sembra che vengano effettuati interventi di pulizia.
Ecco un esempio della direttiva ui-date che crea un datepicker jQuery. (source)
element.on('blur', function() { ... });
hanno messo un gestore di eventi sull'elemento, ma in nessun punto fanno mai UNBIND l'evento. Mi sarei aspettato che ci fosse del codice come:
var namespace = ".uiDate";
element.on('blur' + namespace, function() { ... });
element.on("$destroy" + namespace, function()
{
element.datepicker("destroy"); //Destroy datepicker widget
element.off(namespace); //Unbind events from this namespace
});
Quindi questo mi chiede se c'è qualcosa che non capisco. Non farebbe quello che stanno facendo una perdita di memoria in situazioni in cui l'elemento w/questa direttiva viene creato e distrutto più e più volte?
Cosa mi manca?
Una domanda simile con una risposta molto utile: http://stackoverflow.com/questions/26983696/angularjs-does-destroy-remove-event-listeners – hgoebl