Before we finish this chapter, it's worth discussing how Views
interact with Routers
. Throughout this chapter, we've deliberately been vague about what you should actually do inside your routing functions, and part of the beauty of Backbone is that it leaves this decision entirely up to you.
For many Backbone users, however, a very common pattern is to create a special Page View
and then instantiate a different subclass of that View
in every route-handling method. Take an example of the following code snippet:
var Book = Backbone.Model.extend({urlRoot: '/book/'}); var Page = Backbone.View.extend({render: function() { var data = this.model ? this.model.toJSON() : {}; this.$el.html(this.template(data)); return this; } }); var BookPage = Page.extend({ template: 'Title: <%= title %>' }); var SiteRouter = new Backbone.Router({ route: { 'book/:bookId(/)': 'bookRoute', }, bookRoute: function(bookId) { var book = new Book...