From 7be7554df01ebb5191b03349204bdbc2cf6a580a Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Wed, 8 Apr 2020 13:43:49 +0200 Subject: [PATCH] Update DomainView --- src/domain_abstract/view/DomainViews.js | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/domain_abstract/view/DomainViews.js b/src/domain_abstract/view/DomainViews.js index 8945beafb..d7c3e228e 100644 --- a/src/domain_abstract/view/DomainViews.js +++ b/src/domain_abstract/view/DomainViews.js @@ -14,9 +14,8 @@ export default Backbone.View.extend({ initialize(opts = {}, config) { this.config = config || opts.config || {}; - this.autoAdd && this.listenTo(this.collection, 'add', this.addTo); - + this.items = []; this.init(); }, @@ -45,7 +44,7 @@ export default Backbone.View.extend({ * @private * */ add(model, fragment) { - const { config, reuseView, itemsView = {} } = this; + const { config, reuseView, items, itemsView = {} } = this; const inputTypes = [ 'button', 'checkbox', @@ -91,7 +90,8 @@ export default Backbone.View.extend({ view = new itemView({ model, config }, config); } - var rendered = view.render().el; + items && items.push(view); + const rendered = view.render().el; if (frag) frag.appendChild(rendered); else this.$el.append(rendered); @@ -99,6 +99,7 @@ export default Backbone.View.extend({ render() { var frag = document.createDocumentFragment(); + this.clearItems(); this.$el.empty(); if (this.collection.length) @@ -111,5 +112,17 @@ export default Backbone.View.extend({ return this; }, - onRender() {} + onRender() {}, + + remove() { + this.clearItems(); + Backbone.View.prototype.remove.apply(this, arguments); + }, + + clearItems() { + const items = this.items || []; + // TODO Traits do not update the target anymore + // items.forEach(item => item.remove()); + // this.items = []; + } });