Sha256: 97312d40a7fd3b9701b08e78e7e7b70428dfb1dbb1c70aaaca374303b01bc85b
Contents?: true
Size: 1.42 KB
Versions: 8
Compression:
Stored size: 1.42 KB
Contents
_.def("Luca.Router").extends("Backbone.Router").with routes: "" : "default" initialize: (@options)-> _.extend @, @options @routeHandlers = _( @routes ).values() # when a route handler is fired, the route:route_name event is triggered by the router # unfortunately this doesn't apply to calls to @navigate() so we override Backbone.Router.navigate # and trigger an event separately. _( @routeHandlers ).each (route_id) => @bind "route:#{ route_id }", ()=> @trigger.apply @, ["change:navigation", route_id ].concat( _( arguments ).flatten() ) #### Router Functions # Intercept calls to Backbone.Router.navigate so that we can at least # build a path from the route, even if we don't trigger the route handler navigate: (route, triggerRoute=false)-> Backbone.Router.prototype.navigate.apply @, arguments @buildPathFrom( Backbone.history.getFragment() ) # given a url fragment, construct an argument chain similar to what would be # emitted from a normal route:#{ name } event that gets triggered # when a route is actually fired. This is used to trap route changes that happen # through calls to @navigate() buildPathFrom: (matchedRoute)-> _(@routes).each (route_id, route)=> regex = @_routeToRegExp(route) if regex.test(matchedRoute) args = @_extractParameters(regex, matchedRoute) @trigger.apply @, ["change:navigation", route_id].concat( args )
Version data entries
8 entries across 8 versions & 1 rubygems