diff --git a/src/dom_components/index.js b/src/dom_components/index.js index 9a794b073..7f0ff50b2 100644 --- a/src/dom_components/index.js +++ b/src/dom_components/index.js @@ -498,7 +498,9 @@ module.exports = () => { * @return {this} */ clear() { - this.getComponents().reset(); + this.getComponents() + .map(i => i) + .forEach(i => i.remove()); return this; }, diff --git a/src/dom_components/view/ComponentTextNodeView.js b/src/dom_components/view/ComponentTextNodeView.js index fb190d371..6171db97e 100644 --- a/src/dom_components/view/ComponentTextNodeView.js +++ b/src/dom_components/view/ComponentTextNodeView.js @@ -1 +1,8 @@ -module.exports = require('backbone').View.extend({}); +module.exports = require('backbone').View.extend({ + initialize() { + this.model.view = this; + }, + _createElement() { + return document.createTextNode(this.model.get('content')); + } +}); diff --git a/src/dom_components/view/ComponentsView.js b/src/dom_components/view/ComponentsView.js index fd92caa9a..17621f2c8 100644 --- a/src/dom_components/view/ComponentsView.js +++ b/src/dom_components/view/ComponentsView.js @@ -75,30 +75,25 @@ module.exports = Backbone.View.extend({ * */ addToCollection(model, fragmentEl, index) { if (!this.compView) this.compView = require('./ComponentView'); - var fragment = fragmentEl || null, - viewObject = this.compView; - - var dt = this.opts.componentTypes; - - var type = model.get('type'); - - for (var it = 0; it < dt.length; it++) { - var dtId = dt[it].id; - if (dtId == type) { + const { config, opts } = this; + const fragment = fragmentEl || null; + const dt = opts.componentTypes; + const type = model.get('type'); + let viewObject = this.compView; + + for (let it = 0; it < dt.length; it++) { + if (dt[it].id == type) { viewObject = dt[it].view; break; } } - //viewObject = dt[type] ? dt[type].view : dt.default.view; - var view = new viewObject({ + const view = new viewObject({ model, - config: this.config, + config, componentTypes: dt }); - var rendered = view.render().el; - if (view.model.get('type') == 'textnode') - rendered = document.createTextNode(view.model.get('content')); + let rendered = view.render().el; if (fragment) { fragment.appendChild(rendered);