2014-01-31 3 views
0

Я пытаюсь реализовать Backbone.js Undo manager с моим существующим кодом. Мое приложение - это шаблонный строитель.Backbone.Undo.js не работает по желанию. Фактически не работает вообще

Здесь находится 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(); 
    }); 

Я считаю, что это простая интеграция, и я пропускаю некоторые мелкие детали. Любая идея, что это может быть?

ответ

0

Do app.editor, app.palette и DbBuilder триггер Магистральные события? UndoManager добавляет слушателей к объектам, которые передаются в функцию register. Если у вас нет extended the supported UndoTypes вашего UndoManager supportsadd, 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") до сих пор возвращают ложь впоследствии, то есть должен быть сложнее проблема, но попробовать это в первую очередь.

Смежные вопросы