我正在尝试使用我的现有代码来实现backbone.js undo管理器。我的应用是一种模板构建器。
这是主对象的console.log。http://screencast.com/t/0jdfcy7l
您可以看到它具有调色板和编辑对象。我想注册撤消,对此进行重做。这是我的撤消经理交互的代码。
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();
});
我相信这是简单的集成,我缺少一些较小的细节。知道什么可能是什么?
app.editor
, app.palette
和 DbBuilder
触发骨干事件吗?Undomanager将侦听器添加到传递给register
功能的对象中。如果您尚未扩展所支持的不可行力,那么您的Undomanager支持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,则必须有一个更棘手的问题,但首先尝试一下。