Issue #906💬 RespondidoAbierto el 28 de febrero de 2018por ciotuvasileReacciones 0

¿Cómo cambiar el contenido de componentes personalizados (html) de AJAX?

Respuesta rápidapor artf

El método 'components()' es la forma de cambiar el contenido interno 'editor.getSelected().components('<div>Nuevo contenido interno</div>');' pero ten cuidado de que con 'editor.getSelected().toHTML()' estés obteniendo el contenido externo (con su etiqueta component)

Lee la respuesta completa abajo ↓

Pregunta

Hola @artf,

Antes que nada, gracias por este increíble plugin.

¿Podríais decirme cómo puedo actualizar o cambiar el contenido de bloqueo?

Creé bloque + componente personalizados. '<table><tr><td class="some-class">text_to_replace</td></tr></table>'

El componente tiene un nuevo botón de barra de herramientas (icono de búsqueda en la captura adjunta) y al hacer clic obtengo información nueva como product_name, etc.

Así que obtengo HTML de bloque actual, hago todo lo que hago...

block_html = editor.getSelected().toHTML();
new_html = block_html.replace(.....);

¿Cómo puedo actualizar el html de bloques seleccionados a texto nuevo? Algo así como 'editor.getSelected().setHTML(new_html);'

Si intento cambiar de modelo

components.addType('product', {
	   model: default_model.extend({
	    	defaults: Object.assign({}, default_model.prototype.defaults, {
				barra de herramientas: [.......],
                                 .....
	      }),

setProductInfo(json) {
		    console.log(json);
		    this.set('style', {color: '#ff0000'});  <=== el color cambia a rojo
		    ¿Cómo cambiar el contenido en lugar del color?
		}
	  }

El código de bloque se ve así:

smc_block_manager.add('product-block', {
		etiqueta: 'Producto - Principal',
		Categoría: block_category_product,
		atributos: {
			Clase: 'FA FA-TAG'
		},
		Contenido: {
			Tipo: 'producto',
			Componentes: product_item,
			activeOnRender: 1
		}
	});

También lo intenté

editor.getSelected().components('nuevo HTML aquí');

Pero parece que se ha añadido un componente nuevo dentro del componente antiguo.

Gracias

! GJS

Respuestas (2)

artf15 de abril de 2018

El método 'components()' es la forma de cambiar el contenido interno 'editor.getSelected().components('<div>Nuevo contenido interno</div>');' pero ten cuidado de que con 'editor.getSelected().toHTML()' estés obteniendo el contenido externo (con su etiqueta component)

lock[bot]17 de septiembre de 2019

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.

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.