Issue #486💬 RespondidoAbierto el 6 de noviembre de 2017por krunal039Reacciones 0

Componente personalizado no editable y además tras la actualización de rasgos, Canvas no se actualiza

Respuesta rápidapor artf

En tu modelo, no necesitas definir 'data-gjs-*', solo tiene sentido para importar desde HTML, así que elimina esto: '''js atributos: { 'data-gjs-type': 'cust-section', }, No puedes editar esto '''js var rowDiv = document.createElement('section'); rowDiv.className = "fila"; rowDiv.innerHTML = "Texto de ejemplo Por favo...

Lee la respuesta completa abajo ↓

Pregunta

A continuación hay código que utilicé para rasgos y sección personalizada, pero tras añadir componente mediante bloque, no puedo editar texto o la actualización de rasgos no actualiza el canvas. He extendido el 'texto'. Además, no recibo html cuando uso editor.html(). Además, cuando hago clic en la imagen no se abre el administrador de recursos. Seguro que me estoy perdiendo de algo. '''js var defaultType = comps.getType('text'); var defaultModel = defaultType.model; var defaultView = defaultType.view; createSectionComp(comps, defaultModel, defaultView)

función createSectionComp(comps, defaultModel, defaultView) {

comps.addType('section', { Defina el modelo model: defaultModel.extend({ Extender propiedades predeterminadas defaults: Object.assign({}, defaultModel.prototype.defaults, {

tipo: 'sección', etiquetaNombre: 'section', título: 'Título de ejemplo', atributos: { 'data-gjs-type': 'cust-section', }, rasgos: [{ Tipo: 'texto', etiqueta: 'Título', Nombre: 'Título', Provisional: 'por ejemplo. Desarrollo del liderazgo', cambioProp: 1, }], }), Initialize(O, opt) { defaultModel.prototype.initialize.apply(esto, argumentos); this.listenTo(this, 'change:title', this.updateModelProps); },

updateModelProps() { var MD = esto; this.set('título', md.get('título'));

}, }, { isComponent(el) { si ((el.getAttribute & & el.getAttribute('data-gjs-type') == 'cust-section') || el.className === 'cust-section') { return { Tipo: 'Sección de Cust' }; } } }),

Definir la vista view: defaultView.extend({

etiquetaNombre: 'div', eventos: {}, inicialize(o) { defaultView.prototype.initialize.apply(esto, argumentos); this.listenTo(this.model, 'change:title', this.updateView); },

updateView() { var rowDiv = document.createElement('section'); rowDiv.className = "fila"; rowDiv.innerHTML = "Texto de ejemplo Por favor cambia aquí"; this.custTextRightHandImage = rowDiv;

return this.custTextRightHandImage; },

render(... args) { defaultView.prototype.render.apply(this, args); this.el.appendChild(this.updateView()); devuelvo esto; } }) }); };

Respuestas (2)

artf7 de noviembre de 2017

En tu modelo, no necesitas definir 'data-gjs-*', solo tiene sentido para importar desde HTML, así que elimina esto: '''js atributos: { 'data-gjs-type': 'cust-section', },

Y tampoco necesitas 'Tipo: 'Sección'.
Por lo que veo, deberías definir addType así
'''js
comps.addType('cust-section', {...

No puedes editar esto '''js var rowDiv = document.createElement('section'); rowDiv.className = "fila"; rowDiv.innerHTML = "Texto de ejemplo Por favor cambia aquí";

como es solo un HTML simple, el editor trabaja con modelos adjuntos a elementos, así que probablemente quieras este 'this.model.append('<section class="row"> Sample ...</section>')' De esta manera actualizas el árbol de modelos, que luego refleja los cambios en el lienzo
lock[bot]18 de septiembre de 2019

Este hilo se ha bloqueado automáticamente porque no ha habido actividad reciente desde que se cerró. Por favor, abre un nuevo problema para bugs relacionados.

Preguntas y respuestas relacionadas

Continúa investigando con debates sobre temas similares.

Plugins de pago que cumplen con este problema

Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.

Ver todos los plugins

Cargando recomendaciones de plugins de pago...

Opción gratuita

Consulta los plugins de código abierto de GrapesJS en GitHub O haz una búsqueda rápida en nuestro catálogo gratuito.

Explora plugins gratuitos →
Opción premium

Los plugins premium incluyen soporte, actualizaciones regulares y funciones listas para producción — ahorrando días de trabajo de integración.

Explora plugins premium →

Tutoriales relacionados

Guías detalladas sobre el mismo tema.

Todos los tutoriales →

Explorar categorías de plugins

Ve directamente a las páginas de categorías de plugins en el marketplace.