var SiteRouter = Router.extend({ el: 'body', routeByHash: false, routes: { '/': 'home', }, initialize: function(){ var fn for (var route in this.routes) { fn = this.routes[route] if (! this[fn]) { this[fn] = this.default_view(fn) } } }, initial_route: null, launch: function(){ if (this.initial_route) { this.parseRoute( this.initial_route ) } else { this.route() } this.initial_route = null }, go: function(url){ if (app.view && app.view.hide) { app.view.hide() } this.pushState(url) this.parseRoute(url) }, default_view: function(name){ var fn = function(){ if (app.view != app.login && app.view != app.signin) { app.last_view = app.view } if (app.view && app.view.hide) { app.view.hide() } if (name.match(/\./)) { var n = name.split(".") app.view = app.views[n[0]][n[1]] } else { app.view = app.views[name] } app.view.show() }.bind(this) return fn }, })