KnockoutJS drop unused templateNodes

This commit is contained in:
the-djmaze 2024-03-03 17:56:43 +01:00
parent ab1a75935f
commit bb3fc79e09

View file

@ -18,8 +18,7 @@
currentViewModel = null; currentViewModel = null;
// Any in-flight loading operation is no longer relevant, so make sure we ignore its completion // Any in-flight loading operation is no longer relevant, so make sure we ignore its completion
currentLoadingOperationId = null; currentLoadingOperationId = null;
}, };
originalChildNodes = [...ko.virtualElements.childNodes(element)];
ko.virtualElements.emptyNode(element); ko.virtualElements.emptyNode(element);
ko.utils.domNodeDisposal['addDisposeCallback'](element, disposeAssociatedComponentViewModel); ko.utils.domNodeDisposal['addDisposeCallback'](element, disposeAssociatedComponentViewModel);
@ -58,15 +57,9 @@
ko.virtualElements.setDomNodeChildren(element, ko.utils.cloneNodes(template)); ko.virtualElements.setDomNodeChildren(element, ko.utils.cloneNodes(template));
currentViewModel = componentDefinition['createViewModel'](componentParams, { currentViewModel = componentDefinition['createViewModel'](componentParams, {
'element': element, 'element': element
'templateNodes': originalChildNodes
}); });
ko.applyBindingsToDescendants(asyncContext.createChildContext(currentViewModel, { ko.applyBindingsToDescendants(asyncContext.createChildContext(currentViewModel, {}), element);
'extend': ctx => {
ctx['$component'] = currentViewModel;
ctx['$componentTemplateNodes'] = originalChildNodes;
}
}), element);
} }
}); });
}, { disposeWhenNodeIsRemoved: element }); }, { disposeWhenNodeIsRemoved: element });