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

This commit is contained in:
James Petts authored and Erik Ziegler committed 2019-01-23 09:38:18 +01:00
1 parent fa4b768214
commit 4579543bde
1 file changed
+20
@@ -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();
}
}
}