Browse Source

Make the `textnode` component and `component.clear` method more compliant to the editor

pull/1918/head
Artur Arseniev 8 years ago
parent
commit
c2d008f101
  1. 4
      src/dom_components/index.js
  2. 9
      src/dom_components/view/ComponentTextNodeView.js
  3. 27
      src/dom_components/view/ComponentsView.js

4
src/dom_components/index.js

@ -498,7 +498,9 @@ module.exports = () => {
* @return {this} * @return {this}
*/ */
clear() { clear() {
this.getComponents().reset(); this.getComponents()
.map(i => i)
.forEach(i => i.remove());
return this; return this;
}, },

9
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'));
}
});

27
src/dom_components/view/ComponentsView.js

@ -75,30 +75,25 @@ module.exports = Backbone.View.extend({
* */ * */
addToCollection(model, fragmentEl, index) { addToCollection(model, fragmentEl, index) {
if (!this.compView) this.compView = require('./ComponentView'); if (!this.compView) this.compView = require('./ComponentView');
var fragment = fragmentEl || null, const { config, opts } = this;
viewObject = this.compView; const fragment = fragmentEl || null;
const dt = opts.componentTypes;
var dt = this.opts.componentTypes; const type = model.get('type');
let viewObject = this.compView;
var type = model.get('type');
for (let it = 0; it < dt.length; it++) {
for (var it = 0; it < dt.length; it++) { if (dt[it].id == type) {
var dtId = dt[it].id;
if (dtId == type) {
viewObject = dt[it].view; viewObject = dt[it].view;
break; break;
} }
} }
//viewObject = dt[type] ? dt[type].view : dt.default.view;
var view = new viewObject({ const view = new viewObject({
model, model,
config: this.config, config,
componentTypes: dt componentTypes: dt
}); });
var rendered = view.render().el; let rendered = view.render().el;
if (view.model.get('type') == 'textnode')
rendered = document.createTextNode(view.model.get('content'));
if (fragment) { if (fragment) {
fragment.appendChild(rendered); fragment.appendChild(rendered);

Loading…
Cancel
Save