diff options
| author | Sebastian K | 2013-11-22 14:33:19 +0100 |
|---|---|---|
| committer | Igor Minar | 2014-01-02 21:30:25 -0800 |
| commit | cf686285c22d528440e173fdb65ad1052d96df3c (patch) | |
| tree | 41d34fe7644ee82d80399101696f4b996ec8ebf1 /src | |
| parent | 7dfedb732dad5ba1f1f21ff611a82ecf8327916c (diff) | |
| download | angular.js-cf686285c22d528440e173fdb65ad1052d96df3c.tar.bz2 | |
fix($location): $location.path() behaviour when $locationChangeStart is triggered by the browser
Fixed inconsistency in $location.path() behaviour on the $locationChangeStart event when using
back/forward buttons in the browser or manually changing the url in the address bar.
$location.path() now returns the target url in these cases.
Closes #4989
Closes #5089
Closes #5118
Closes #5580
Diffstat (limited to 'src')
| -rw-r--r-- | src/ng/location.js | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/ng/location.js b/src/ng/location.js index 12f6c14c..0a47445f 100644 --- a/src/ng/location.js +++ b/src/ng/location.js @@ -659,16 +659,17 @@ function $LocationProvider(){ // update $location when $browser url changes $browser.onUrlChange(function(newUrl) { if ($location.absUrl() != newUrl) { - if ($rootScope.$broadcast('$locationChangeStart', newUrl, - $location.absUrl()).defaultPrevented) { - $browser.url($location.absUrl()); - return; - } $rootScope.$evalAsync(function() { var oldUrl = $location.absUrl(); $location.$$parse(newUrl); - afterLocationChange(oldUrl); + if ($rootScope.$broadcast('$locationChangeStart', newUrl, + oldUrl).defaultPrevented) { + $location.$$parse(oldUrl); + $browser.url(oldUrl); + } else { + afterLocationChange(oldUrl); + } }); if (!$rootScope.$$phase) $rootScope.$digest(); } |
