Вы долго ждали этого ответа, возможно, вы уже ответили на него.У меня нет кода, но пара идей поразила меня.
На высоком уровне у меня была бы базовая модель, которую нельзя отменить - или, возможно, вы могли бы использовать какую-то формуMixin, чтобы дать модели способность быть отменяемой.Реализация отмены использовала бы шаблон команды для формирования многоуровневого «стека» отмены.
Если бы я реализовывал это, я думаю, я мог бы оборудовать отменяемую модель набором командных моделей backbone.js,Эти модели команд будут инкапсулировать изменения в отменяемую модель и будут создаваться вместе с событием изменения из модели.Чтобы отменить изменение в отменяемой модели, вы должны отключить верхнюю команду и применить ее отмену к отменяемой модели.Обновление сервера приведет к удалению коллекции команд.
Единственное осложнение всего этого - как управлять изменениями, возникающими из-за отмены, - они сами не должны генерировать команду отмены вверхстека.
Надеюсь, это поможет.