Does removing a DOM element remove the associated scope?
angularjs
Solution
EDIT:
Angular 1.2.X now patches JQuery to call $destroy
However, I haven't tested to see if I got the same results I saw before.
(Thanks @KumarHarsh for pointing this out in the comments)
Old answer (Angular 1.0.X):
No, `$element.remove()` doesn't remove the scope, presumably because the scope is still referenced by other scopes.
As proof you can remove a scoped element from a nested controller, then load the scope from the parent controller and check `$$childHead` to see the child scope still exists.
Here is a plunk to demonstrate
Also, you can view the scopes in memory using the Batarang plugin for Chrome
Problem
In Angular, scopes are associated with DOM elements. If you call `$element.remove()`, does `$element.scope().$destroy()` end up getting called as well? Or is the developer responsible for cleaning up scopes himself? This makes me think that it removing a DOM element should automatically remove the scope: angular.js ``` ///////////////////////////////////////////// // jQuery mutation patch // // In conjunction with bindJQuery intercepts all jQuery's DOM destruction apis and fires a // $destroy event on all DOM nodes being removed. // ///////////////////////////////////////////// function JQLitePatchJQueryRemove(name, dispatchThis) { /* ... */ } ```