From c9c3f718e2564a6cc13f958a777ebb4ba9ce5de5 Mon Sep 17 00:00:00 2001 From: Pete Bacon Darwin Date: Tue, 11 Jun 2013 22:15:54 +0100 Subject: docs(ngRoute): clarify when gets updated --- src/ngRoute/route.js | 8 +++++--- src/ngRoute/routeParams.js | 4 ++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/ngRoute/route.js b/src/ngRoute/route.js index 32b7c626..de0d9016 100644 --- a/src/ngRoute/route.js +++ b/src/ngRoute/route.js @@ -35,9 +35,9 @@ function $RouteProvider(){ * * * `path` can contain named groups starting with a colon (`:name`). All characters up * to the next slash are matched and stored in `$routeParams` under the given `name` - * when the route matches. + * after the route is resolved. * * `path` can contain named groups starting with a star (`*name`). All characters are - * eagerly stored in `$routeParams` under the given `name` when the route matches. + * eagerly stored in `$routeParams` under the given `name` after the route is resolved. * * For example, routes like `/color/:color/largecode/*largecode/edit` will match * `/color/brown/largecode/code/with/slashs/edit` and extract: @@ -83,7 +83,9 @@ function $RouteProvider(){ * - `factory` - `{string|function}`: If `string` then it is an alias for a service. * Otherwise if function, then it is {@link api/AUTO.$injector#invoke injected} * and the return value is treated as the dependency. If the result is a promise, it is resolved - * before its value is injected into the controller. + * before its value is injected into the controller. Be aware that `ngRoute.$routeParams` will + * still refer to the previous route within these resolve functions. Use `$route.current.params` + * to access the new route parameters, instead. * * - `redirectTo` – {(string|function())=} – value to update * {@link ng.$location $location} path with and trigger route redirection. diff --git a/src/ngRoute/routeParams.js b/src/ngRoute/routeParams.js index 0c86e89d..0007e833 100644 --- a/src/ngRoute/routeParams.js +++ b/src/ngRoute/routeParams.js @@ -18,6 +18,10 @@ ngRouteModule.provider('$routeParams', $RouteParamsProvider); * The service guarantees that the identity of the `$routeParams` object will remain unchanged * (but its properties will likely change) even when a route change occurs. * + * Note that the `$routeParams` are only updated *after* a route change completes successfully. + * This means that you cannot rely on `$routeParams` being correct in route resolve functions. + * Instead you can use `$route.current.params` to access the new route's parameters. + * * @example *
  *  // Given:
-- 
cgit v1.2.3