Plato on Github
Report Home
approuter.js
Maintainability
73.56
Lines of code
31
Difficulty
13.20
Estimated Errors
0.21
Function weight
By Complexity
By SLOC
// AppRouter // --------- // Reduce the boilerplate code of handling route events // and then calling a single method on another object. // Have your routers configured to call the method on // your object, directly. // // Configure an AppRouter with `appRoutes`. // // App routers can only take one `controller` object. // It is recommended that you divide your controller // objects in to smaller pieces of related functionality // and have multiple routers / controllers, instead of // just one giant router and controller. // // You can also add standard routes to an AppRouter. Marionette.AppRouter = Backbone.Router.extend({ constructor: function(options){ Backbone.Router.prototype.constructor.apply(this, slice(arguments)); this.options = options; if (this.appRoutes){ var controller = Marionette.getOption(this, "controller"); this.processAppRoutes(controller, this.appRoutes); } }, // Internal method to process the `appRoutes` for the // router, and turn them in to routes that trigger the // specified method on the specified `controller`. processAppRoutes: function(controller, appRoutes) { var routeNames = _.keys(appRoutes).reverse(); // Backbone requires reverted order of routes _.each(routeNames, function(route) { var methodName = appRoutes[route]; var method = controller[methodName]; if (!method) { throw new Error("Method '" + methodName + "' was not found on the controller"); } this.route(route, methodName, _.bind(method, controller)); }, this); } });