diff options
| author | Andres Ornelas | 2010-05-27 11:26:23 -0700 |
|---|---|---|
| committer | Andres Ornelas | 2010-05-27 11:26:23 -0700 |
| commit | cb5d21192787985bbff20b369e885639de253345 (patch) | |
| tree | 127c401a80e03ac4f6ad657ddbc1dfe6841d0f2a /src/services.js | |
| parent | 177873df86b6b069892184f24518959e7cef33cd (diff) | |
| download | angular.js-cb5d21192787985bbff20b369e885639de253345.tar.bz2 | |
extracted switchRouteMatcher and added necessary libraries to angular-scenario
Diffstat (limited to 'src/services.js')
| -rw-r--r-- | src/services.js | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/services.js b/src/services.js index 940f1905..5f42ef18 100644 --- a/src/services.js +++ b/src/services.js @@ -158,10 +158,33 @@ angularService("$invalidWidgets", function(){ return invalidWidgets; }); +function switchRouteMatcher(on, when, dstName) { + var regex = '^' + when.replace(/[\.\\\(\)\^\$]/g, "\$1") + '$', + params = [], + dst = {}; + foreach(when.split(/\W/), function(param){ + if (param) { + var paramRegExp = new RegExp(":" + param + "([\\W])"); + if (regex.match(paramRegExp)) { + regex = regex.replace(paramRegExp, "([^\/]*)$1"); + params.push(param); + } + } + }); + var match = on.match(new RegExp(regex)); + if (match) { + foreach(params, function(name, index){ + dst[name] = match[index + 1]; + }); + if (dstName) this.$set(dstName, dst); + } + return match ? dst : null; +} + angularService('$route', function(location, params){ var routes = {}, onChange = [], - matcher = angularWidget('NG:SWITCH').route, + matcher = switchRouteMatcher, parentScope = this, dirty = 0, $route = { |
