fix($route): make nextRoute.$route private

the `nextRoute` object available in `$routeChangeStart` handler
accidentaly leaked  property which pointed to the route definition
currently being matched.

this was done just for the internal needs of the `$route` implementation
and was never documented as public api.

Some confusion arouse around why the $route property was not always
available on the `nextRoute` object (see #1907). The right thing for us
to do is to prefix the property with $$ for now and refactor the code
to remove the property completely in the future. Application developers
should use the `nextRoute` object itself rather than its `$route` property.
The main diff is that nextRoute inherits from the object referenced by $route.

BREAKING CHANGE: in $routeChangeStart event, nextRoute.$route property is gone.

Use the nextRoute object instead of nextRoute.$route.

Closes #1907
This commit is contained in:
Igor Minar 2013-03-08 11:43:37 -08:00
parent cb5ce981fb
commit 6f71e80914

View file

@ -397,7 +397,7 @@ function $RouteProvider(){
var next = parseRoute(),
last = $route.current;
if (next && last && next.$route === last.$route
if (next && last && next.$$route === last.$$route
&& equals(next.pathParams, last.pathParams) && !next.reloadOnSearch && !forceReload) {
last.params = next.params;
copy(last.params, $routeParams);
@ -477,7 +477,7 @@ function $RouteProvider(){
match = inherit(route, {
params: extend({}, $location.search(), params),
pathParams: params});
match.$route = route;
match.$$route = route;
}
});
// No route matched; fallback to "otherwise" route