From 7a35ebec735e06268bda0e3c38e5f3191384a8df Mon Sep 17 00:00:00 2001 From: antelle Date: Mon, 26 Apr 2021 19:20:29 +0200 Subject: [PATCH] fixed a memory leak see #1580 --- app/scripts/presenters/entry-presenter.js | 4 ++++ app/scripts/views/list-view.js | 3 +++ 2 files changed, 7 insertions(+) diff --git a/app/scripts/presenters/entry-presenter.js b/app/scripts/presenters/entry-presenter.js index 6bc8ef9f..7d854245 100644 --- a/app/scripts/presenters/entry-presenter.js +++ b/app/scripts/presenters/entry-presenter.js @@ -17,6 +17,10 @@ EntryPresenter.prototype = { } return this; }, + reset() { + this.entry = null; + this.group = null; + }, get id() { return this.entry ? this.entry.id : this.group.id; }, diff --git a/app/scripts/views/list-view.js b/app/scripts/views/list-view.js index baf24ffe..ec9a990e 100644 --- a/app/scripts/views/list-view.js +++ b/app/scripts/views/list-view.js @@ -112,6 +112,7 @@ class ListView extends View { presenter.present(this.items[0]); const itemTemplate = this.getItemTemplate(); const itemsHtml = itemTemplate(presenter, DefaultTemplateOptions); + presenter.reset(); const html = itemsTemplate( { itemsHtml, columns: this.tableColumns }, @@ -186,6 +187,7 @@ class ListView extends View { itemsHtml += itemTemplate(presenter, DefaultTemplateOptions); renderedIndices.push(ix); } + presenter.reset(); const tempEl = document.createElement('div'); tempEl.innerHTML = itemsHtml; @@ -221,6 +223,7 @@ class ListView extends View { this.presenter.present(item); const itemHtml = itemTemplate(this.presenter, DefaultTemplateOptions); + this.presenter.reset(); const tempEl = document.createElement('div'); tempEl.innerHTML = itemHtml;