Created
May 21, 2012 17:00
-
-
Save juliocesar/2763278 to your computer and use it in GitHub Desktop.
AwesomeRouter: a cool Backbone.js router class
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# AwesomeRouter: A class that I've been using throughout a few Backbone.js apps I've built. | |
# | |
# It adds 2 features: an event that gets fired when one calls `navigate` (aptly named | |
# "navigate"), so you can bind things to when a URL gets triggered. And a "before filter" | |
# method `before`, which you can use to run things before every a route gets triggered. | |
# | |
# This could easily be extended to have after filters too, or to only trigger a route | |
# upon @before returning something that's not false. | |
class AwesomeRouter extends Backbone.Router | |
initialize : -> | |
if _.isFunction(@before) | |
_super = Backbone.history.loadUrl | |
before = @before | |
router = @ | |
Backbone.history.loadUrl = -> | |
before.call(router) | |
router.trigger 'navigate' | |
_super.apply(@, arguments) | |
# Usage: | |
class MyRouter extends AwesomeRouter | |
routes : | |
'/' : 'home' | |
before : -> | |
alert 'moo' | |
home : -> | |
console.log "Bet you saw me alert 'moo' just now" | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment