Issue #2168💬 RespondidoAbierto el 25 de julio de 2019por jadejahardipsinhReacciones 0

Los cambios personalizados en HTML del DOM se reflejan al guardar cambios en la base de datos

Respuesta rápidapor artf

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)

artf7 de agosto de 2019

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')

jadejahardipsinh7 de agosto de 2019

@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. 
artf12 de agosto de 2019

@jadejahardipsinh versión de uvapesjs?

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.