Issue #1439💬 RespondidoAbierto el 18 de septiembre de 2018por kickbkReacciones 1

Eliminar imágenes del lienzo/LS cuando se eliminan del AM

Respuesta rápidapor artf1

Vale... @kickbk por eso pido especificar toda la información cuando crees nuevos números, así que por favor, la próxima vez, hazlo Por cierto, esos son componentes diferentes, prueba esto: 'wrapper.find('[data-gjs-type=mj-image][src="...."]')'

Lee la respuesta completa abajo ↓

Pregunta

Subo una imagen con el gestor de recursos, que almacena la imagen en el servidor. Selecciono la imagen para insertar en el lienzo y la almacena en el LocalStorage. ¡Genial!

Ahora borro la imagen. Lo elimina del servidor y del Gestor de Recursos. ¡Genial!

Actualizo la página.

Como la imagen se usó en el lienzo, no fue eliminada de LS, por lo que la imagen aparece ausente en el lienzo. Abrir el AM también muestra una imagen perdida, ya que está intentando cargarla desde LS. Si me equivoco en POR QUÉ está pasando esto, por favor corrígeme.

Creo que la solución aquí podría ser que cuando eliminemos la imagen de AM también debería eliminarla del lienzo y de la pantalla de Beach. ¿Cómo hago eso?

Ten en cuenta que tengo una función ejecutada que puedo activar para eliminar imágenes del AM con el código de abajo, así que quizás debería añadir algo.

const am = editor. Gestor de Activos;
am.addType('image', {
	Vista: {
		onRemove(e) {
...

Respuestas (3)

artf21 de septiembre de 2018

Vale... @kickbk por eso pido especificar toda la información cuando crees nuevos números, así que por favor, la próxima vez, hazlo

Por cierto, esos son componentes diferentes, prueba esto: 'wrapper.find('[data-gjs-type=mj-image][src="...."]')'

artf20 de septiembre de 2018

creo que la solución aquí podría ser que cuando eliminemos la imagen de AM también debería eliminarla del lienzo y de LS.

Vale, pero esta lógica depende solo de ti, definitivamente no es algo que debamos añadir dentro del núcleo

Ojo, tengo una función en marcha que puedo acceder a la función de eliminar imágenes del AM con el código de abajo, así que quizá debería añadir algo.

Correcto, una vez que termina la llamada a ajax se elimina el componente '''js am.addType('image', { Vista: { onRemove(e) { const src = this.model.get('src'); const wrapper = this.em.get('DomComponents').getWrapper(); ... deleteOnServer(...). entonces(res => { if(res.isDeleted) { wrapper.find('img[src="${src}"]').forEach(component => { component.collection.remove(component); Acabo de darme cuenta de que no tenemos método component.remove... Lo añadiré en la próxima edición }); } })

kickbk20 de septiembre de 2018

Cuando hago wrapper.find('img[src="${src}"]') me queda un array vacío. De hecho, también me sale un array vacío en wrapper.find('img'). Estoy comprando el envoltorio, pero parece que no tiene imágenes dentro. ¿Estamos consultando el elemento equivocado?

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.