HAZAÑA: Combinar getDirtyCount con deshacer/rehacer
¡Hola @neon12345! Que yo sepa, el 'changesCount' también se usa junto con 'stepsBeforeSave' para activar el almacenamiento cuando el 'autoguardado' está activado. (cf: https://grapesjs.com/docs/modules/Storage.html#store-and-load-templateshttps://github.com/artf/grapesjs/blob/dev/src/editor/model/Editor.js#L170 ) ¡Sal...
Lee la respuesta completa abajo ↓Pregunta
Actualmente, el número de cambios solo aumenta independientemente de deshacer o rehacer. Me pregunto si existe alguna aplicación donde se use el valor real o si esto es solo un indicador booleano para cambios.
Si solo se usa como booleano, sería posible añadir una bandera al estado de deshacer y marcar la posición guardada. De este modo, solo es posible señalar cambios cuando la pila de deshacer no apunta a la posición guardada al deshacer y rehacer.
Algo así parece funcionar:
var um = editor. UndoManager;
punto de cambio var = null;
var hasChange = false;
función findChange() {
var s = um.getStack();
var idx = s.pointer;
var old = hasChange;
if(idx != -1) {
hasChange = punto de cambio !== s.models[idx];
} else {
hasChange = punto de cambio !== null;
}
if(old != hasChange) {
console.log('cambiado', hasChange);
}
}
función saveChange() {
var s = um.getStack();
var idx = s.pointer;
if(idx != -1) {
punto de cambio = s.modelos[idx];
} else {
punto de cambio = nulo;
}
}
editor.on('undo', findChange);
editor.on('redo', findChange);
editor.on('load', function() {
var i = um.getInstance();
var add = i.constructor.prototype._addToStack;
i.constructor.prototype._addToStack = función() {
var ret = add.apply(esto, argumentos);
findChange();
return ret;
}
});Respuestas (3)
¡Hola @neon12345!
Que yo sepa, el 'changesCount' también se usa junto con 'stepsBeforeSave' para activar el almacenamiento cuando el 'autoguardado' está activado.
(cf: - https://grapesjs.com/docs/modules/Storage.html#store-and-load-templates - https://github.com/artf/grapesjs/blob/dev/src/editor/model/Editor.js#L170 )
¡Salud!
Vale. Pero eso significa que deshacer y rehacer siempre activará el guardado automático, lo cual no es lo óptimo.
getDirtyCount devuelve el número de cambios, así que no se usa como un booleano. Si tienes una mejor solución para manejar cambios de deshacer o rehacer, la residencia permanente es bienvenida
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #1458
Los eventos de Jquery incrustados en el editor grapesjs no funcionan como se esperaba.
@artf, intenté incrustar mi plantilla en el editor grapesjs. El problema que tengo es que el editor no funciona como se espera con esa plan...
Issue #1047
[BUG] El modelo no puede cambiar después de cambiar el valor en el menú desplegable Seleccionar personalizado.
Hola, Estoy usando el enlace CDN para uvas JS de unpkg.com En mi proyecto, he usado un rasgo personalizado como menú desplegable de selecci...
Issue #1170
Problema con el diseño de la barra de navegación
Hola a todos, Estoy teniendo problemas en Navbar, donde la respuesta no funciona y el estilo también choca con el bootstrap. @artf ¿Me pued...
Issue #1214
Consulta para un problema relacionado con el 873
'Número anterior' Por favor, confirma, el error reportado anteriormente ha sido resuelto. O sigue teniendo el mismo problema. Por favor, co...
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 →Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.