$ 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?

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);
    }
}

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.