From cebce2e377233d75b4d0695b42c564a1777948fd Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Thu, 17 May 2018 23:12:52 +0200 Subject: [PATCH] Add `remove` listener on panel items. Fixes #1081 --- src/panels/view/PanelView.js | 10 ++++++---- src/panels/view/PanelsView.js | 11 +++++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/panels/view/PanelView.js b/src/panels/view/PanelView.js index 7856206db..f6e9f14dd 100644 --- a/src/panels/view/PanelView.js +++ b/src/panels/view/PanelView.js @@ -4,14 +4,16 @@ var ButtonsView = require('./ButtonsView'); module.exports = Backbone.View.extend({ initialize(o) { const config = o.config || {}; + const model = this.model; this.config = config; this.pfx = config.stylePrefix || ''; this.ppfx = config.pStylePrefix || ''; - this.buttons = this.model.get('buttons'); + this.buttons = model.get('buttons'); this.className = this.pfx + 'panel'; - this.id = this.pfx + this.model.get('id'); - this.listenTo(this.model, 'change:appendContent', this.appendContent); - this.listenTo(this.model, 'change:content', this.updateContent); + this.id = this.pfx + model.get('id'); + this.listenTo(model, 'change:appendContent', this.appendContent); + this.listenTo(model, 'change:content', this.updateContent); + model.view = this; }, /** diff --git a/src/panels/view/PanelsView.js b/src/panels/view/PanelsView.js index 58be5862d..89cf4b862 100644 --- a/src/panels/view/PanelsView.js +++ b/src/panels/view/PanelsView.js @@ -6,11 +6,18 @@ module.exports = Backbone.View.extend({ this.opt = o || {}; this.config = this.opt.config || {}; this.pfx = this.config.stylePrefix || ''; - this.listenTo(this.collection, 'add', this.addTo); - this.listenTo(this.collection, 'reset', this.render); + const items = this.collection; + this.listenTo(items, 'add', this.addTo); + this.listenTo(items, 'reset', this.render); + this.listenTo(items, 'remove', this.onRemove); this.className = this.pfx + 'panels'; }, + onRemove(model) { + const view = model.view; + view && view.remove(); + }, + /** * Add to collection * @param Object Model