1.3.0 • Published 10 years ago

dispatch.router v1.3.0

Weekly downloads
5
License
-
Repository
-
Last release
10 years ago

Dispatch.js

Dispatch.js is a micro JS library for routing browser hash change events to handlers, with parameters.

Example

The following snippet will alert "Hello" when the page is loaded, and "Hello world" when the location hash changes to "#/hello/world".

dispatch.on("/", function() {
  alert("Hello");
});

dispatch.on("/hello/:name", function(params) {
  alert("Hello " + params.name);
});

dispatch.start("/");

The location hash can be changed in JS:

window.location.hash = "/hello/world";

or by linking to the appropriate location:

<a href="#/hello/world">hello</a>

API

dispatch.on(path, handler);

Add a handler to respond to path. Any part of path starting with : is treated as a required paramenter, which will be a named property of an object passed as the first argument to the handler. Any part starting with * is treated as an optional parameter. You can have more than one optional parameter, but optional parameter(s) always have to be at the end of the path.

dispatch.off([path | handler]);

Remove a handler by its path or by passing the handler itself. Calling this function without any arguments will remove all handlers.

dispatch.start([path]);

If there is a current hash value (for example if the page is bookmarked), the appropriate .on handler will be used. If not, Dispatch will run the handler answering to the path given to dispatch.start. In other words, you call start with the path of the home page of your application, which should be shown if there is not already a current hash path in the users browser.

dispatch.go(path);

Navigate the browser to a certain path. Use this method if the handler should be called even if the path given is the same as the current browser hash. In other words, using this method ensures that the handler for the given path will be run, and the location hash will be changed if its not the same as the given path.

dispatch.before = [f_1, ..., f_n];
dispatch.after = [f_1, ..., f_n];

dispatch.before and dispatch.after are arrays to which you may add methods that should be run before and after each route. Every method in these arrays must take a callback function as their first argument, which must be called when the method is finished. This is useful for performing asynchronous operations before or after routes are run.

Support

Tested in IE8+ and the latest two versions of other popular browsers.

License

MIT. See LICENSE.