Los cambios personalizados en HTML del DOM se reflejan al guardar cambios en la base de datos
Asegúrate de usar la última versión e intenta llamar a 'sync:content' en el componente seleccionado antes de llamar al comando deseado, por ejemplo. '''js editor.getSelected().trigger('sync:content'); editor.runCommand('gjs-get-inlined-html') ```
Lee la respuesta completa abajo ↓Pregunta
He creado una nueva opción en la barra de herramientas llamada text-align usando el siguiente código
'''js const rteStudio = studio. RichTextEditor; rteStudio.add('text-align', { icon: "<select id="textAlignSelector" clase="gjs-field lm select">" + "<valor de opción=''>Seleccionar alineación</option>" + "<valor de opción="izquierda">Izquierda</option>" + "<valor de opción="centro">Centro</option> " + "<valor de opción="derecho">Correcto</option>" + "</select>", atributos: { título: 'Text Align'}, evento: 'cambio', result: (rteStudio, acción) => { var val = action.btn.firstChild.value; var fontTag = ""; if(action.btn.className && (action.btn.className.indexOf("gjs-rte-active") < 0)) { action.btn.className += " ".concat("gjs-rte-active"); } var el = rteStudio.getCurrentEl(); si (el & & val != "" ) { depurador; if(el.tagName == "SPAN") { el = el.parentNode; } el.style.textAlign = val; rteStudio.syncActions(); } rteStudio.insertHTML(etiquetaFont) } });
Para que el código anterior funcionara, añadí la siguiente función al archivo 'grapes.js':
'''js
{
clave: "getCurrentEl",
value: function getCurrentEl(value) {
var lastNode;
var doc = this.doc;
var sel = doc.getSelection();
if (sel && sel.rangeCount) {
var node = doc.createElement('div');
var range = sel.getRangeAt(0);
return range.commonAncestorContainer.parentNode;
}
else {
return null;
}
}
}
Debido al código anterior, mis cambios en el editor en la interfaz de usuario se refieren a: ! alineación-texto-feature-demo
Estoy recibiendo HTML del editor usando el siguiente código:
'''js studio.runCommand('gjs-get-inlined-html')
Ahora, el problema es que, en el HTML que se obtiene usando el comando anterior, no veo que mis cambios de formato se hagan usando el código anterior.
Por favor, ayudadme a solucionar este problema. Por eso, no puedo guardar los cambios realizados usando la función _text-align_ en la base de datos
Respuestas (3)
Asegúrate de usar la última versión e intenta llamar a 'sync:content' en el componente seleccionado antes de llamar al comando deseado, por ejemplo. '''js editor.getSelected().trigger('sync:content'); editor.runCommand('gjs-get-inlined-html')
@artf, gracias por la respuesta. Lo intenté con eso pero, por desgracia, no funcionó. Lo estoy obteniendo usando el siguiente código:
'''js studioCommand.add('com-save', { run: function(studio, sender) { studio.getSelected().trigger("sync:content") var studioContent = studio.runCommand('gjs-get-inlined-html'); Guardando contenido de studio en la base de datos usando la llamada ajax } });
Ya lo hice pero no pasa nada. Por favor, corríjanme si algo no va bien.
De nuevo, te agradezco mucho tu ayuda con esto.
@jadejahardipsinh versión de uvapesjs?
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #1909
SetComponents a veces es muy lento
Hola a todos, Estamos trabajando en una aplicación de boletín y usamos grapesjs como editor de correo con el preajuste del boletín PLGUIN y...
Issue #3202
Ayuda necesaria: guardar/restaurar los tipos de bloques de datos de GJS
Hola a todos, ¿podéis indicarme la dirección correcta?Cuando guardo el código html y el código css, se recorta una nueva línea. ¿Hay alguna...
Issue #2644
[AYUDA] GrapesJS carga html/css desde la base de datos
Hola, Estamos usando grapesjs en nuestra app de Angular. Hemos conseguido crear y guardar el html/css de grapesjs en nuestra base de datos....
Issue #1661
He creado una tabla HTML y no puedo arrastrar nuevos elementos a las celdas de la tabla
Hola. Si creo una tabla HTML con el siguiente bloque de código, todo funciona, puedo dejar una Quote, por ejemplo, en cualquier celda: Pero...
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.
Tutorial
Ship to Production Faster: What’s New in GrapesJS Shadcn
Supercharge your page builder! GrapesJS Shadcn adds live drag previews, rich text / commands, dynamic data, and canvas presets to ship to prod faster.
Tutorial
How to Build a Production GrapesJS Editor: The Complete Walkthrough of Brief, Preset, Plugins, and Services
A complete walkthrough of building a production GrapesJS editor: how to choose a preset, pick plugins, and scope setup services without burning a sprint.
Tutorial
GrapesJS Inline RTE Plugins Update: CKEditor 5 v0.1.4 and Froala Inline Text Editor
CKEditor 5 Inline for GrapesJS v0.1.4 fixes Studio SDK toolbar clipping, iframe injection and link balloon bugs. Compare with Froala Inline — both $69.
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.