From d7e7629b98edb562cc29ce5a17e5ae488ab6ace7 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Mon, 13 Apr 2020 22:47:38 +0200 Subject: [PATCH] Improve ensure models --- src/dom_components/model/Component.js | 2 ++ src/dom_components/model/Components.js | 22 ++++++++++++---------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/dom_components/model/Component.js b/src/dom_components/model/Component.js index 5b5ec0fbe..6fdc593a5 100644 --- a/src/dom_components/model/Component.js +++ b/src/dom_components/model/Component.js @@ -1266,6 +1266,8 @@ const Component = Backbone.Model.extend(Styleable).extend( model.setId(nextId); list[nextId] = model; } + + model.components().forEach(i => Component.ensureInList(i)); }, /** diff --git a/src/dom_components/model/Components.js b/src/dom_components/model/Components.js index a3c45f8bd..3e16914e7 100644 --- a/src/dom_components/model/Components.js +++ b/src/dom_components/model/Components.js @@ -25,15 +25,6 @@ export default Backbone.Collection.extend({ const { domc, em } = this; const allByID = domc.allById(); - // Remove stuff registered in DomComponents.handleChanges - const inner = removed.components(); - const um = em.get('UndoManager'); - em.stopListening(inner); - em.stopListening(removed); - em.stopListening(removed.get('classes')); - um.remove(removed); - um.remove(inner); - if (!opts.temporary) { // Remove the component from the gloabl list const id = removed.getId(); @@ -58,8 +49,19 @@ export default Backbone.Collection.extend({ em.trigger('component:remove', removed); } - removed.empty(opts); + const inner = removed.components(); + inner.forEach(it => this.removeChildren(it, coll, opts)); + // removed.empty(opts); } + + // Remove stuff registered in DomComponents.handleChanges + const inner = removed.components(); + const um = em.get('UndoManager'); + em.stopListening(inner); + em.stopListening(removed); + em.stopListening(removed.get('classes')); + um.remove(removed); + um.remove(inner); }, model(attrs, options) {