#745 Remove references to DOM nodes when unmounting

When a null component is passed into m.mount(), remove references to the root DOM element from:
- roots
- cellCache
- nodeCache

And remove the associated entries from:
- controllers
- components
This commit is contained in:
Greg King 2015-07-29 09:40:32 -04:00
parent a23a32a3d9
commit c46567ab81

View file

@ -764,6 +764,8 @@ var m = (function app(window, undefined) {
controllers[index].onunload(event);
}
var isNullComponent = component === null;
if (!isPrevented) {
m.redraw.strategy("all");
m.startComputation();
@ -777,14 +779,24 @@ var m = (function app(window, undefined) {
components[index] = component;
}
endFirstComputation();
if (isNullComponent) {
removeRootElement(root, index);
}
return controllers[index];
}
if (!component) {
roots.splice(index, 1);
controllers.splice(index, 1);
components.splice(index, 1);
if (isNullComponent) {
removeRootElement(root, index);
}
};
function removeRootElement(root, index) {
roots.splice(index, 1);
controllers.splice(index, 1);
components.splice(index, 1);
reset(root);
nodeCache.splice(getCellCacheKey(root), 1);
}
var redrawing = false, forcing = false;
m.redraw = function(force) {
if (redrawing) return;