Issue #2908💬 RespondidoAbierto el 21 de julio de 2020por neon12345Reacciones 0

HAZAÑA: Combinar getDirtyCount con deshacer/rehacer

Respuesta rápidapor mcottret

¡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

Fragmento de códigoTEXT
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)

neon1234527 de julio de 2020

Vale. Pero eso significa que deshacer y rehacer siempre activará el guardado automático, lo cual no es lo óptimo.

artf25 de agosto de 2020

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.

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 →

Explorar categorías de plugins

Ve directamente a las páginas de categorías de plugins en el marketplace.