我正在尝试使用现有代码实现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();
});
我认为这是简单的整合,我错过了一些细节。知道它可能是什么吗?
答案 0 :(得分:0)
app.editor
,app.palette
和DbBuilder
会触发Backbone事件吗? UndoManager将侦听器添加到传递给register
- 函数的对象。如果您没有extended the supported UndoTypes您的UndoManager supports add
,remove
,reset
和change
事件,并会从这些事件中创建可撤消的操作。
您可能希望通过将对象记录到控制台来测试对象是否触发这些事件。
app.editor.on("all", console.log, console);
app.palette.on("all", console.log, console);
DbBuilder.on("all", console.log, console);
如果他们触发其中一个事件并且isAvailable("undo")
之后仍然返回false,则必然会出现更严重的问题,但首先尝试这个。