C'è una perdita di memoria pesante nella mia applicazione, ma non ho trovato le cause, e qui è lo sfondo.Abbiamo bisogno di sciogliere gli ascoltatori di eventi nelle direttive quando l'angolare inizia a distruggere?
- Sto usando AngularJS + JQuery (plugin)
Molti ascoltatori sono legati come la seguente:
$ (elemento) .on ("KeyUp", function() {});
Quindi la domanda è
Devo sciogliere quegli ascoltatori nelle direttive seguendo?
scope.$on("$destroy", function() {
$(element).off();
});
BTW, come si rileva solitamente la perdita di memoria in un'applicazione Web? Io uso il profilo di Chrome (vedi qui Profiling memory performance) ma non ho potuto rintracciare i codici in cui la memoria perde. Hai qualche suggerimento?
Grazie mille!
Non credo che questo è necessaria a meno che si sono vincolanti tutti gli ambiti a $ rootScope. –
Non è necessario rimuoverli, di solito vengono raccolti. È possibile che si desideri rimuovere gli ascoltatori della finestra, ad esempio lo scorrimento o gli eventi dei messaggi se il gestore interagisce con gli elementi dell'ambito. Vedi http://stackoverflow.com/questions/12528049/if-a-dom-element-is-removed-are-its-listeners-also-removed-from-memory – Kapep