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(''); +      });      });    });  | 
