fix($route): update current route upon $route instantiation

This fixes cases where the first ngView is loaded in a template asynchronously (such as through ngInclude), as the service will miss the first  event otherwise.

Closes #4957
This commit is contained in:
Daniel Zimmermann 2014-01-08 19:58:09 +11:00 committed by Igor Minar
parent cde840fdf8
commit 2b344dbd20
2 changed files with 5 additions and 4 deletions

View file

@ -443,6 +443,7 @@ function $RouteProvider(){
}
};
updateRoute();
$rootScope.$on('$locationChangeSuccess', updateRoute);
return $route;

View file

@ -389,7 +389,7 @@ describe('$route', function() {
var onChangeSpy = jasmine.createSpy('onChange');
$rootScope.$on('$routeChangeStart', onChangeSpy);
expect($route.current).toBeUndefined();
expect($route.current).not.toBeUndefined();
expect(onChangeSpy).not.toHaveBeenCalled();
$location.path('/unknownRoute');
@ -426,7 +426,7 @@ describe('$route', function() {
// init
$rootScope.$on('$routeChangeStart', onChangeSpy);
expect($route.current).toBeUndefined();
expect($route.current).not.toBeUndefined();
expect(onChangeSpy).not.toHaveBeenCalled();
@ -434,7 +434,7 @@ describe('$route', function() {
$location.path('/unknownRoute');
$rootScope.$digest();
expect(currentRoute).toBeUndefined();
expect(currentRoute).not.toBeUndefined();
expect(nextRoute.templateUrl).toBe('404.html');
expect($route.current.templateUrl).toBe('404.html');
expect(onChangeSpy).toHaveBeenCalled();
@ -770,7 +770,7 @@ describe('$route', function() {
var onChangeSpy = jasmine.createSpy('onChange');
$rootScope.$on('$routeChangeStart', onChangeSpy);
expect($route.current).toBeUndefined();
expect($route.current).not.toBeUndefined();
expect(onChangeSpy).not.toHaveBeenCalled();
$location.path('/');