From 804e01c1442d3663c7af5d5e9ac5c34ee99e6384 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Sat, 13 Jul 2019 22:25:49 +0200 Subject: [PATCH] Recreate view element on `script` prop update --- src/dom_components/view/ComponentView.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/dom_components/view/ComponentView.js b/src/dom_components/view/ComponentView.js index 5cc5eea90..9bdaeb810 100644 --- a/src/dom_components/view/ComponentView.js +++ b/src/dom_components/view/ComponentView.js @@ -33,7 +33,7 @@ export default Backbone.View.extend({ this.listenTo(model, 'change:highlightable', this.updateHighlight); this.listenTo(model, 'change:status', this.updateStatus); this.listenTo(model, 'change:state', this.updateState); - this.listenTo(model, 'change:script', this.render); + this.listenTo(model, 'change:script', this.reset); this.listenTo(model, 'change:content', this.updateContent); this.listenTo(model, 'change', this.handleChange); this.listenTo(model, 'active', this.onActive); @@ -345,6 +345,19 @@ export default Backbone.View.extend({ return container; }, + /** + * Recreate the element of the view + */ + reset() { + const { el, model } = this; + const collection = model.components(); + this.el = ''; + this._ensureElement(); + this.$el.data({ model, collection }); + el.replaceWith(this.el); + this.render(); + }, + /** * Render children components * @private