¡Comandos con método de detención, nunca detenidos programáticamente, no se ejecutan de nuevo!
Hola @lucasschirm y gracias por el informe. Como habrás notado, este es el cambio que hemos introducido en la última versión https://github.com/artf/grapesjs/releases/tag/v0.14.55 La razón detrás de esto es bastante sencilla. Si creas un comando con 'start' y 'stop', lo declaras explícitamente como stateful uno, así q...
Lee la respuesta completa abajo ↓Pregunta
# Problema
Cuando añades un comando personalizado con stop y don't stop, no se ejecutará de nuevo si no pongo force: 1 como parámetro al ejecutar.
Cuando añades un comando personalizado con un método de parada como:
VAR disparado = 0;
editor. Commands.add('custom-command', {
run() {
disparado++;
console.log("disparado", disparado);
},
stop() {
console.log("Comando detenido");
}
});
y si nunca se detiene el run, el método run nunca volverá a dispararse.
editor. Commands.run ('custom-command');
editor. Commands.run ('custom-command');
editor. Commands.stop ('custom-command');
editor. Commands.run ('custom-command');
debería imprimir
disparado 1
disparado 2
detenido
disparado 3
Otra solución añadiría una propiedad a la Colección de Comandos que sea así:
editor. Commands.add('custom-command', {
runType: 'always' || 'after-stop' || 'después de detenerse o forzar',
run() {
disparado++;
console.log("disparado", disparado);
},
stop() {
console.log("Comando detenido");
}
});
# Violín GrapeJS
https://jsfiddle.net/lucasschirm/85juepgs/5/
# Cómo replicar
- Crear un nuevo comando con función de parada
- añadir un oyente a modal:open para ejecutarlo
- añadir un oyente a modal:close para detenerlo
- añadir un oyente en component:toggled para abrir un modal
## Lo que ocurre es:
- (clic en cualquier bloque) Comando ejecutado
- Modal Opens
- (cierra el modal) No dispares modal:close
- (clic fuera del bloque) Modal Opens
## Qué debería estar ocurriendo y comportamiento en versiones anteriores:
- (clic en cualquier bloque) Ejecuciones de comandos
- Modal Opens
- (cierra el modal) No dispares modal:close
- (clic fuera del bloque) Comando ejecutado
- Modal OpensRespuestas (3)
Hola @lucasschirm y gracias por el informe. Como habrás notado, este es el cambio que hemos introducido en la última versión https://github.com/artf/grapesjs/releases/tag/v0.14.55 La razón detrás de esto es bastante sencilla. Si creas un comando con 'start' y 'stop', lo declaras explícitamente como stateful uno, así que lo activas en 'start' y lo desactivas en 'stop'. Cuando el comando está activo (puedes obtener todos los comandos actualmente activos con 'editor. Commands.getActive()') no tiene sentido ejecutar sus instrucciones de activación de nuevo (esto también evita problemas extraños que podrías tener al ejecutar estas instrucciones varias veces) y lo mismo ocurre una vez que el comando está desactivado. Aparte de eso, siempre puedes forzarlo con la opción 'forzar', así que no lo veo como un problema. Una cosa que se me ocurre añadir (para que se comporte como la versión anterior, pero no lo recomiendo, porque probablemente no estás creando tu comando correctamente) es algún tipo de opción global, por ejemplo: '''js grapesjs.init({ ..., comandos: { estricto: falso, // por defecto es verdadero }, })
Gracias, he enviado un comunicado por el cierre modal y no disparando el modal I Gatillo cerrado.
El jueves, 21 de marzo de 2019, 15:14 Artur Arseniev [email protected] Escribió:
Hola @lucasschirm https://github.com/lucasschirm y gracias por el informe. Como habrás notado, este es el cambio de ruptura que hemos introducido en el última versión https://github.com/artf/grapesjs/releases/tag/v0.14.55 La razón detrás de esto es bastante sencilla. Si creas un comando con start y stop declaras explícitamente que es con estado uno, así que tú actívalo al arrancar y desactivarlo al parar. Cuando el comando está activo (puedes obtener todos los comandos actualmente activos con editor. Commands.getActive()) no tiene sentido ejecutar su activación instrucciones de nuevo (esto también evita problemas extraños que puedas tener ejecutando estas instrucciones varias veces) y lo mismo ocurre una vez que el comando está desactivado. Aparte de eso, siempre puedes forzarlo con la opción de forzar, así que no lo veo como un problema. Una cosa que se me ocurre añadir (solo para que se comporte como el versión anterior, pero no la recomiendo, porque probablemente estés creando tu comando no es correcto) es algún tipo de opción global, por ejemplo:
grapesjs.init({ ..., ordenes: { estricto: falso, // por defecto es verdadero }, })
— Recibes esto porque te mencionaron. Responde directamente a este correo, viséalo en GitHub https://github.com/artf/grapesjs/issues/1881#issuecomment-475423347, o mudo el hilo https://github.com/notifications/unsubscribe-auth/AFFgEmhHBOjwigByVdovuV-iEwj4FrWTks5vZAQ1gaJpZM4bp2N8 .
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.
Issue #665
Componente personalizado y guardado
¡Perdón, yo otra vez! Estoy intentando guardar mi plantilla con mi nuevo componente "img-link": Pero cuando guardo mi plantilla usando el c...
Issue #1927
[PREGUNTAS] Error Sender.set('active') Tamaño máximo de pila de llamadas superado
Tengo un botón con el comando 'mostrar-izquierda', que quiero hacer que cuando se pulse el botón una segunda vez (o más) siga 'activo', per...
Issue #812
Layers Manager no funciona con varios editores
¡Hola de nuevo! Como comenté en una pregunta anterior, estamos trabajando con varios editores en la misma ventana. El problema que tenemos...
Issue #1715
Hola, soy nuevo en tu proyecto, pero me encanta. Tengo un pequeño problema con los atributos de la imagen.
He añadido dos rasgos nuevos al gestor de rasgos para imágenes. Anchura y altura. Lo añadí como plugin siguiendo tu ejemplo. Funciona perfe...
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.
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.