Componente personalizado no editable y además tras la actualización de rasgos, Canvas no se actualiza
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)
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
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.
Issue #1622
Emisión de fuente seleccionada por defecto para fuente personalizada en la tipografía.
Hay un problema de fuente: cuando hago clic en cualquier elemento no muestra la fuente actual del elemento, añadí código personalizado para...
Issue #857
[Pregunta]: ¿Cómo añado una fuente personalizada en la Tipografía | ¿Desplegable de fuentes?
Hola, Para empezar, esto es lo que llevo mucho tiempo buscando, así que gracias por vuestro esfuerzo. A continuación, me gustaría añadir un...
Issue #1381
Incrustación personalizada de vídeo en un componente de vídeo
@artf quiero incluir un código de incrustación personalizado en el componente de vídeo para que el usuario pueda añadir cualquier iframe qu...
Issue #1324
Eliminar atributos de un componente
Hola @artf no sé si es posible eliminar un atributo de un componente. En nuestro proyecto estoy inyectando un atributo personalizado de un...
Plugins de pago que cumplen con este problema
Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.
Cargando recomendaciones de plugins de pago...
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 →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.
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.