Backbone.Undo.js没有按预期工作。实际上根本不工作

时间:2014-01-31 12:28:50

标签: javascript jquery backbone.js model undo-redo

我正在尝试使用现有代码实现Backbone.js Undo manager。我的应用程序是一种模板构建器。

这是主要对象的console.log。 http://screencast.com/t/0JDfCY7l

你可以看到它有调色板和编辑器对象。我想注册undo,redo。 这是我的撤消管理器集成的代码。

var UndoManager = new Backbone.UndoManager;
    UndoManager.register(app.editor,app.palette,DdBuilder); // Pass any number of arguments
    UndoManager.startTracking(); // Start observation after instantiation
    $(".fusion_undo").click(function () {

        alert(UndoManager.isAvailable("undo")); //returns false always
        UndoManager.undo();
    });
    $(".fusion_redo").click(function () {
        UndoManager.redo();
    });

我认为这是简单的整合,我错过了一些细节。知道它可能是什么吗?

1 个答案:

答案 0 :(得分:0)

app.editorapp.paletteDbBuilder会触发Backbone事件吗? UndoManager将侦听器添加到传递给register - 函数的对象。如果您没有extended the supported UndoTypes您的UndoManager supports addremoveresetchange事件,并会从这些事件中创建可撤消的操作。

您可能希望通过将对象记录到控制台来测试对象是否触发这些事件。

app.editor.on("all", console.log, console);
app.palette.on("all", console.log, console);
DbBuilder.on("all", console.log, console);

如果他们触发其中一个事件并且isAvailable("undo")之后仍然返回false,则必然会出现更严重的问题,但首先尝试这个。