diff --git a/Backbone.Undo.js b/Backbone.Undo.js index 4fc83a1..c2cceec 100644 --- a/Backbone.Undo.js +++ b/Backbone.Undo.js @@ -209,11 +209,10 @@ * * @param {String} which Either "undo" or "redo" * @param {Object} action The Action's attributes - * @param {OwnedUndoTypes} undoTypes The undoTypes-instance which has the "undo"/"redo" handler * @return {undefined} */ - function actionUndoRedo (which, action, undoTypes) { - var type = action.type, fn = !undoTypes[type] || undoTypes[type][which]; + function actionUndoRedo (which, action) { + var type = action.type, undoTypes = action.undoTypes, fn = !undoTypes[type] || undoTypes[type][which]; if (_.isFunction(fn)) { fn(action.object, action.before, action.after, action); } @@ -247,7 +246,7 @@ actions = stack.where({"cycleIndex": action.get("cycleIndex")}); stack.pointer += (isUndo ? -1 : 1) * (actions.length - 1); while (action = isUndo ? actions.pop() : actions.shift()) { - action[which](manager.undoTypes); + action[which](); } stack.isCurrentlyUndoRedoing = false; @@ -269,6 +268,7 @@ if (hasKeys(res, "object", "before", "after")) { res.type = type; res.cycleIndex = getCurrentCycleIndex(); + res.undoTypes = undoTypes; if (stack.pointer < stack.length - 1) { // New Actions must always be added to the end of the stack // If the pointer is not pointed to the last action in the @@ -460,7 +460,7 @@ * @return {undefined} */ undo: function (undoTypes) { - actionUndoRedo("undo", this.attributes, undoTypes); + actionUndoRedo("undo", this.attributes); }, /** * Redoes this action. @@ -468,7 +468,7 @@ * @return {undefined} */ redo: function (undoTypes) { - actionUndoRedo("redo", this.attributes, undoTypes); + actionUndoRedo("redo", this.attributes); } }), UndoStack = Backbone.Collection.extend({