diff options
| author | Igor Minar | 2011-01-31 23:25:42 -0800 |
|---|---|---|
| committer | Igor Minar | 2011-02-01 09:35:18 -0800 |
| commit | c648fee5c2c46cbd2ea8b5bd4cec8005f182db1c (patch) | |
| tree | 56e26a842612cf7e050737d3875b7855318d3b9a | |
| parent | 9462c78fbf0896f0939c1bf3eb44a3f4f503f0a6 (diff) | |
| download | angular.js-c648fee5c2c46cbd2ea8b5bd4cec8005f182db1c.tar.bz2 | |
fix $location to handle updates to empty hash well
| -rw-r--r-- | src/services.js | 8 | ||||
| -rw-r--r-- | test/servicesSpec.js | 17 |
2 files changed, 22 insertions, 3 deletions
diff --git a/src/services.js b/src/services.js index b4aca2c1..395c1298 100644 --- a/src/services.js +++ b/src/services.js @@ -109,7 +109,7 @@ angularServiceInject("$location", function($browser) { extend(location, parseHref(href)); } else { if (isDefined(href.hash)) { - extend(href, parseHash(href.hash)); + extend(href, isString(href.hash) ? parseHash(href.hash) : href.hash); } extend(location, href); @@ -155,7 +155,9 @@ angularServiceInject("$location", function($browser) { } else hash.hashSearch = path; - update(hash); + hash.hash = composeHash(hash); + + update({hash: hash}); } @@ -187,7 +189,7 @@ angularServiceInject("$location", function($browser) { } if (location.hash != lastLocation.hash) { var hash = parseHash(location.hash); - updateHash(hash.path, hash.search); + updateHash(hash.hashPath, hash.hashSearch); } else { location.hash = composeHash(location); location.href = composeHref(location); diff --git a/test/servicesSpec.js b/test/servicesSpec.js index 02e874fe..f7151dbc 100644 --- a/test/servicesSpec.js +++ b/test/servicesSpec.js @@ -298,6 +298,12 @@ describe("service", function(){ $location.update('http://www.angularjs.org/index.php#'); expect($location.href).toEqual('http://www.angularjs.org/index.php'); }); + + it('should clear hash when updating to hash-less URL', function() { + $location.update('http://server'); + expect($location.href).toBe('http://server'); + expect($location.hash).toBe(''); + }); }); @@ -320,6 +326,17 @@ describe("service", function(){ expect($location.hashSearch).toEqual({a: 'b'}); expect($location.hashPath).toEqual('path'); }); + + it('should update href and hash when updating to empty string', function() { + $location.updateHash(''); + expect($location.href).toBe('http://server'); + expect($location.hash).toBe(''); + + scope.$eval(); + + expect($location.href).toBe('http://server'); + expect($location.hash).toBe(''); + }); }); }); |
