Skip to content

Instantly share code, notes, and snippets.

@robdodson
Created May 22, 2012 03:53
Show Gist options
  • Select an option

  • Save robdodson/2766457 to your computer and use it in GitHub Desktop.

Select an option

Save robdodson/2766457 to your computer and use it in GitHub Desktop.
Busted backbone router. Search doesn't work
require([
"namespace",
// Libs
"jquery",
"use!backbone",
// Modules
"modules/example"
],
function(namespace, $, Backbone, Example) {
// Defining the application router, you can attach sub routers here.
var Router = Backbone.Router.extend({
routes: {
"": "index",
"search/:query" : "search"
},
index: function() {
var tutorial = new Example.Views.Tutorial();
// Attach the tutorial to the DOM
tutorial.render(function(el) {
$("#main").html(el);
});
},
search: function(query) {
console.log('query:', query);
}
});
// Shorthand the application namespace
var app = namespace.app;
// Treat the jQuery ready function as the entry point to the application.
// Inside this function, kick-off all initialization, everything up to this
// point should be definitions.
$(function() {
// Define your master router on the application namespace and trigger all
// navigation from this instance.
app.router = new Router();
// Trigger the initial route and enable HTML5 History API support
Backbone.history.start({ pushState: true });
});
// All navigation that is relative should be passed through the navigate
// method, to be processed by the router. If the link has a data-bypass
// attribute, bypass the delegation completely.
$(document).on("click", "a:not([data-bypass])", function(evt) {
// Get the anchor href and protcol
var href = $(this).attr("href");
var protocol = this.protocol + "//";
// Ensure the protocol is not part of URL, meaning its relative.
if (href && href.slice(0, protocol.length) !== protocol &&
href.indexOf("javascript:") !== 0) {
// Stop the default event to ensure the link will not cause a page
// refresh.
evt.preventDefault();
// `Backbone.history.navigate` is sufficient for all Routers and will
// trigger the correct events. The Router's internal `navigate` method
// calls this anyways.
Backbone.history.navigate(href, true);
}
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment