Widziałem wiele przykładów dyrektyw, w tym te z AngularUI team, gdzie nie wydają się czyścić.
Oto przykład z dyrektywy ui-date, która tworzy dateticker jQuery. (source)
element.on('blur', function() { ... });
one umieszczane obsługi zdarzeń na elemencie, ale w żadnym momencie nie kiedykolwiek rozpiąć zdarzenia. Spodziewałam się obecności kodu:
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
});
To sprawia, że zastanawiam się, czy jest coś, czego nie rozumiem. Czy to, co robią, nie spowoduje przecieku pamięci w sytuacjach, gdy element w/tej dyrektywie jest tworzony i niszczony w kółko?
Czego mi brakuje?
Podobne pytanie o bardzo użytecznej odpowiedzi: http://stackoverflow.com/questions/26983696/angularjs-does-destroy-remove-event-listeners – hgoebl