diff --git a/backbone.js b/backbone.js index f7d3b8d2..bb7333d9 100644 --- a/backbone.js +++ b/backbone.js @@ -697,6 +697,7 @@ route : function(route, name, callback) { Backbone.history || (Backbone.history = new Backbone.History); if (!_.isRegExp(route)) route = this._routeToRegExp(route); + if (!callback) callback = this[name]; Backbone.history.route(route, _.bind(function(fragment) { var args = this._extractParameters(route, fragment); callback && callback.apply(this, args); diff --git a/test/router.js b/test/router.js index 17c8105b..4c64a837 100644 --- a/test/router.js +++ b/test/router.js @@ -19,12 +19,17 @@ $(document).ready(function() { initialize : function(options) { this.testing = options.testing; + this.route('implicit', 'implicit'); }, counter: function() { this.count++; }, + implicit: function() { + this.count++; + }, + search : function(query, page) { this.query = query; this.page = page; @@ -114,6 +119,12 @@ $(document).ready(function() { equals(router.count, 2); }); + test("Router: use implicit callback if none provided", function() { + router.count = 0; + router.navigate('implicit', {trigger: true}) + equals(router.count, 1); + }); + asyncTest("Router: routes via navigate with {replace: true}", function() { var historyLength = window.history.length; router.navigate('search/manhattan/start_here');