Restablecer rasgo al editar el contenido de un componente personalizado
@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)
@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.
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: [...], });
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:
- Cuando se arrastra y se suelta en el lienzo (tienes una ventana emergente con opciones)
- Desde la configuración (también eligiendo entre opciones)
- 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.
Issue #3309
Los Nodos de Texto interfieren al cambiar el contenido en un elemento
Versión: 0.16.44 Hola @artf Tengo un bloque personalizado con un componente de botón personalizado, cuyo contenido es similar al de este. `...
Issue #3019
[PREGUNTA] - Vincular texto/html interno (como div, p, h1) a Trait
¡Hola! He creado un rasgo personalizado y quiero que me permitan cambiar el contenido de las etiquetas (en este caso es una etiqueta H1) ba...
Issue #1959
[Pregunta] Editar innerHTML en un botón personalizado
Hola a todos, Estoy intentando cambiar el texto en un componente de botón, pero no consigo editarlo. He añadido este tipo: Incluí el paráme...
Issue #460
Cuando la vista del componente modifica el HTML, los componentes de texto ya no son editables
Estoy intentando crear un componente personalizado que contenga algo de texto lorem ipsum en el contenido, para editarlo una vez que esté e...
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 →Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.