aboutsummaryrefslogtreecommitdiffstats
path: root/src/ng/location.js
diff options
context:
space:
mode:
authorSebastian K2013-11-22 14:33:19 +0100
committerIgor Minar2014-01-02 21:30:25 -0800
commitcf686285c22d528440e173fdb65ad1052d96df3c (patch)
tree41d34fe7644ee82d80399101696f4b996ec8ebf1 /src/ng/location.js
parent7dfedb732dad5ba1f1f21ff611a82ecf8327916c (diff)
downloadangular.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/ng/location.js')
-rw-r--r--src/ng/location.js13
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();
}