diff --git a/src/service/route.js b/src/service/route.js index ddc3df493729..261c9029efc7 100644 --- a/src/service/route.js +++ b/src/service/route.js @@ -116,6 +116,7 @@ angularServiceInject('$route', function($location, $routeParams) { rootScope = this, dirty = 0, forceReload = false, + stopUpdate = false, $route = { routes: routes, @@ -250,6 +251,14 @@ angularServiceInject('$route', function($location, $routeParams) { return match ? dst : null; } + function stopUpdateCallback() { + stopUpdate = true; + } + + function refreshUpdateState() { + stopUpdate = false; + } + function updateRoute() { var next = parseRoute(), last = $route.current, @@ -262,7 +271,11 @@ angularServiceInject('$route', function($location, $routeParams) { last.scope && last.scope.$emit('$routeUpdate'); } else { forceReload = false; - rootScope.$broadcast('$beforeRouteChange', next, last); + rootScope.$broadcast('$beforeRouteChange', next, last, stopUpdateCallback); + if(stopUpdate) { + refreshUpdateState(); + return; + } last && last.scope && last.scope.$destroy(); $route.current = next; if (next) {
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: