Finite-State Machine for Backbone views and models
JavaScript CoffeeScript CSS
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.gitignore
.travis.yml
LICENSE
Makefile
README.md
bower.json
package.json

README.md

Backbone-FSM Build Status

Finite-State Machine for Backbone views and models. Browser and Node.js compatible.

Installation

Bower

bower install backbone-fsm

Old school

Include lib/backbone-fsm.js into your page.

Node.js

npm install backbone-fsm

Usage

Initialization

FSM comes with mixin method. You have to extend this during initialization.

var Foo = Backbone.View.extend({
	initialize: function () {
		FSM.mixin(this);
	}
});

Transitions

You can define transitions and defaultState:

var Foo = Backbone.View.extend({
	initialize: function () {
		FSM.mixin(this);
	},

	defaultState: 'firstState',

	transitions: {
		'transitionName': {
			from: 'firstState',
			to: 'secondState'
		}
	},

	onTransitionName: function (callback) {
		callback();
	}
});

To make a transition run transitionTo("secondState"). During transition:

  1. transition:start event is emited
  2. onTransitionName callback is called (if defined).
  3. transition:stop event is emited

Example

Backbone-FSM live example: http://jsfiddle.net/fragphace/Zc6Gx/

Tests

For server-side tests:

npm test

Browser tests can be found in test/browser.html. Tested under:

  • IE 7+
  • FF 15+
  • Chrome 22+

Development

  • Generate JS files - make coffee
  • Watch mode - make watch