Issue #2193✓ ResueltoAbierto el 14 de agosto de 2019por inaLarReacciones 2

Restablecer rasgo al editar el contenido de un componente personalizado

Respuesta rápidapor inaLar2

@artf, respecto a la opción "Select" no pude conectar el cambio en el contenido y que funcionara al cambiar el rasgo en un solo flujo y también cambiarlo manualmente editando su texto/contenido. El cambio manual no sincronizaba el rasgo, pero conseguí que funcionara. Un componente de texto personalizado funcionó perfe...

Lee la respuesta completa abajo ↓

Pregunta

Hola,

Tengo un componente personalizado cuyo contenido se puede cambiar cambiando las opciones de selección de rasgos, pero también puede editarse de forma similar al tipo de componente de texto cuando ya está renderizado dentro del lienzo. ¿Hay alguna forma sencilla de reiniciar el atributo relacionado con los rasgos al editar un componente?

'''js modelo: { Predeterminados: { Tipo: 'Etiqueta', etiquetaNombre: 'span', Droppable: 0, editable: 1, Textible: 1, rasgos: [{ tipo: 'select', etiqueta: 'Tipo personalizado', nombre: 'customType', opciones: customTypeOptions, }], }, toHTML() { return this.get('content'); },

Vista: { eventos: { enfoque: 'resetTrait', }, reseTrait() { } }

Respuestas (3)

👍 Muy útilinaLar24 de agosto de 2019

@artf, respecto a la opción "Select" no pude conectar el cambio en el contenido y que funcionara al cambiar el rasgo en un solo flujo y también cambiarlo manualmente editando su texto/contenido. El cambio manual no sincronizaba el rasgo, pero conseguí que funcionara. Un componente de texto personalizado funcionó perfectamente.

En cuanto a la documentación de la última versión, la estoy leyendo ahora mismo y parece muy buena, pero no la vi cuando publiqué la pregunta.

Puede que solo me pase a mí, pero aprendo con el ejemplo, así que más ejemplos y casos de uso siempre serán un punto a favor.

Entiendo que el producto es abierto y agradezco tu esfuerzo. Espero adquirir más conocimientos y poder contribuir con algo en un futuro próximo.

Salud.

zgover14 de agosto de 2019

Podrías adjuntar un oyente de eventos al content prop del componente, luego en la callback recuperar el rasgo o cambiar el valor prop del trait, véase el ejemplo más abajo tomado de docs

'''javascript Actualicemos las 'opciones' de nuestro rasgo 'tipo', definidas en el componente de entrada componente const = editor.getSelected(); component.getTrait('type').set('options', [ { id: 'opt1', nombre: 'Nueva opción 1'}, { id: 'opt2', nombre: 'Nueva opción 2'}, ]); o con múltiples valores component.getTrait('type').set({ etiqueta: 'Mi tipo', opciones: [...], });

inaLar15 de agosto de 2019

Gracias, Zachary1748, pero no puedo usar eso en mi caso. Quizá no lo expliqué bien. Tengo un componente hecho a medida. El contenido de los componentes puede cambiarse de 3 maneras:

  1. Cuando se arrastra y se suelta en el lienzo (tienes una ventana emergente con opciones)
  2. Desde la configuración (también eligiendo entre opciones)
  3. Editando su texto dentro del lienzo

En fin, creo que he encontrado una solución: creé un tipo de dato personalizado y vinculé los eventos a su cambio también, no solo a los cambios de contenido. Pero todavía lo estoy probando.

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 →

Explorar categorías de plugins

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