$ routeParams no funciona en la función resolver

138

Estoy usando esta técnica para cargar datos. Así que he creado la siguiente función de resolución:

NoteController.resolve = {
    note: function($routeParams, Note) {
         return Note.get($routeParams.key);
    }
}

El problema es que $routeParams.keyestá undefineden el momento de la resolveejecución de la función. ¿Es correcto / error? ¿Cómo puedo arreglarlo?

fedor.belov
fuente

Respuestas:

273

Necesitas usar $route.current.params.keyen su lugar. El $routeParamsse actualiza solo después de cambiar una ruta. Entonces su código debería mirar a lo largo de esas líneas:

NoteController.resolve = {
    note: function($route, Note) {
         return Note.get($route.current.params.key);
    }
}
pkozlowski.opensource
fuente
77
¡Gracias! ¿Por qué necesito $ routeParams entonces?
fedor.belov
2
Supongo que docs.angularjs.org/api/ng.$routeParams son buenas API cuando una ruta ya se hizo coincidir y cambió. Pero es cierto que es un poco confuso ...
pkozlowski.opensource
1
Puede usar $routeParamsdentro del controlador
meconroy
13
para las personas que usan ui-routery vienen aquí: $stateParamses el camino a seguir
petrkotek
Si está usando algo como el Ionicmarco, lo usará $stateParams.keydentro de su función de resolución, ya que se usa ui-routercomo @beret dijo. Me tomó un tiempo darme cuenta ..
ObjectiveTruth