From 579fee80440265420cfc41cf368795f9ffe3e34a Mon Sep 17 00:00:00 2001 From: Andy Burke Date: Mon, 11 Feb 2013 18:48:57 -0800 Subject: [PATCH] Add ability to skip routing on a particular setRoute() call. --- lib/director/browser.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/director/browser.js b/lib/director/browser.js index d570997..2c82237 100644 --- a/lib/director/browser.js +++ b/lib/director/browser.js @@ -37,6 +37,7 @@ var listener = { mode: 'modern', hash: dloc.hash, history: false, + skip: false, check: function () { var h = dloc.hash; @@ -64,9 +65,12 @@ var listener = { } function onchange(onChangeEvent) { - for (var i = 0, l = Router.listeners.length; i < l; i++) { - Router.listeners[i](onChangeEvent); + if (!self.skip) { + for (var i = 0, l = Router.listeners.length; i < l; i++) { + Router.listeners[i](onChangeEvent); + } } + self.skip = false; } //note IE8 is being counted as 'modern' because it has the hashchange event @@ -226,19 +230,22 @@ Router.prototype.explode = function () { return v.slice(1, v.length).split("/"); }; -Router.prototype.setRoute = function (i, v, val) { +Router.prototype.setRoute = function (i, v, val, skip) { var url = this.explode(); if (typeof i === 'number' && typeof v === 'string') { url[i] = v; + skip = val; } else if (typeof val === 'string') { url.splice(i, v, s); } else { url = [i]; + skip = v; } + listener.skip = skip; listener.setHash(url.join('/')); return url; };