Issue #1817💬 RespondidoAbierto el 20 de febrero de 2019por AkibDeraiya123Reacciones 0

Cambiar el contenido HTML mientras el bloque se renderiza en el editor

Respuesta rápidapor artf

No hay @AkibDeraiya123 si intentas acceder al modelo desde el 'script' significa que has malinterpretado totalmente su concepto; por favor, lee con atención aquí https://grapesjs.com/docs/modules/Components-js.html#basic-scripts 'script' es para el HTML final (donde 'model', editor y GrapesJS no existen), no para el e...

Lee la respuesta completa abajo ↓

Pregunta

Hola @artf Tengo un bloque en el gestor de bloques como

bm.add("encabezado-con-barra-de búsqueda",
    {
    label: '<div class="gjs-block-label">Cabecera con barra de búsqueda</div>',
    Tab: "1",
    categoría: "Portafolio",
    Contenido: {
    script: función () {
        Estoy recibiendo el ID de la nueva división añadida por este bloque aquí.
        const idOfNewDiv = $(this).attr("id");
        Usando la línea de abajo puedo editar el DOM, pero no se refleja en editor.getHtml()
        document.getElementById(idOfNewDiv).innerHTML = "<p>Hola</p>";
    },
    Contenido: '<div class="testing"></div>'
    }
}
);

Según el script anterior dentro del bloque, quiero añadir contenido HTML dinámico mientras este bloque se renderiza en la interfaz.

Sé que no necesito cambiar de DOM. Pero necesito cambiar usando el modelo, aunque no sé cómo puedo cambiarlo usando el modo por id/clase.

¿Podrías ayudarme, por favor, cómo puedo lograr esto?

Respuestas (3)

artf22 de febrero de 2019

No hay @AkibDeraiya123 si intentas acceder al modelo desde el 'script' significa que has malinterpretado totalmente su concepto; por favor, lee con atención aquí https://grapesjs.com/docs/modules/Components-js.html#basic-scripts 'script' es para el HTML final (donde 'model', editor y GrapesJS no existen), no para el editor

AkibDeraiya12322 de febrero de 2019

Gracias por la respuesta @artf , ¿Entonces significa que no puedo cargar contenido dinámico en bloques mientras se renderiza en el editor? Si es así, ¿cómo puedo?

¿Puedo reemplazar el HTML de todo el bloque por 'this.innerHTML = 'Nuevo contenido en Html''?

artf22 de febrero de 2019

Por supuesto que puedes, pero no a través de la propiedad de 'script'. Tienes que crear un componente personalizado y actualizar allí su modelo

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.