A simple undo/redo stack for Ember.js objects
Questions? Ping me @gavinjoyce
This is an Ember CLI addon, to install:
npm install ember-undo-stack --save
Add the UndoStack
mixin and implement a checkpointData
computed property and a restoreCheckpoint
function:
var Cat = Ember.Object.extend(UndoStack, {
name: 'Sully',
color: 'Black',
checkpointData: function() {
return {
name: this.get('name'),
color: this.get('color')
}
}.property('name', 'color'),
restoreCheckpoint: function(data) {
this.setProperties({
name: data.name,
color: data.color
});
}
})
The UndoStack
mixin adds checkpoint
, undo
and redo
functions to your object which can be used as follows:
var cat = Cat.create({
name: 'Sooty',
color: 'Black'
});
cat.checkpoint();
cat.set('name', 'Hugo');
cat.checkpoint();
cat.undo();
cat.get('name'); // => 'Sooty'
cat.redo();
cat.get('name'); // => 'Hugo'
A throttledCheckpoint
function and undoCheckpointThrottleInMilliseconds
property are also added.
- Create a few sample applications
- Store a diff between checkpoints instead of a copy (#4)
git clone
this repositorynpm install
bower install
ember server
- Visit your app at http://localhost:4200.