Fixed memory leak by properly triggering remove. (#339)

This commit is contained in:
James Petts 2019-01-23 08:38:18 +00:00 committed by Erik Ziegler
parent fa4b768214
commit 4579543bde

View File

@ -211,6 +211,7 @@ export class LayoutManager {
const layoutTemplate = Template[this.layoutTemplateName];
this.removeViewportContainers();
this.parentNode.innerHTML = '';
this.updateLayoutClass();
Blaze.renderWithData(layoutTemplate, data, this.parentNode);
@ -316,6 +317,7 @@ export class LayoutManager {
const layoutTemplate = Template.gridLayout;
this.removeViewportContainers();
this.parentNode.innerHTML = '';
Blaze.renderWithData(layoutTemplate, data, this.parentNode);
@ -732,4 +734,22 @@ export class LayoutManager {
return this.layoutProps.row !== 1 && this.layoutProps.columns !== 1;
}
/**
* removeViewportContainers - Removes viewport containers. Required to
* cause onDestroyed to trigger before rendering the layout manager with
* new data.
*
* @return {null}
*/
removeViewportContainers() {
const containers = $('.viewportContainer');
// NOTE: Trawl through object backwards, as we remove elements as we go.
for (let i = containers.length - 1; i >= 0; i--) {
const container = containers.get(i);
const removable = $(container).find('.removable');
$(removable).remove();
}
}
}