$ routeParams funktioniert nicht in der Auflösungsfunktion

138

Ich benutze diese Technik, um Daten zu laden. Also habe ich die folgende Auflösungsfunktion erstellt:

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

Die Probleme, die $routeParams.keysind undefinedim Moment der resolveAusführung der Funktion. Ist es richtig / Fehler? Wie kann ich es reparieren?

fedor.belov
quelle

Antworten:

273

Sie müssen $route.current.params.keystattdessen verwenden. Das $routeParamswird erst aktualisiert, nachdem eine Route geändert wurde. Ihr Code sollte also folgendermaßen aussehen:

NoteController.resolve = {
    note: function($route, Note) {
         return Note.get($route.current.params.key);
    }
}
pkozlowski.opensource
quelle
7
Danke dir! Warum brauche ich dann $ routeParams?
fedor.belov
2
Ich denke, dass docs.angularjs.org/api/ng.$routeParams eine nette API sind, wenn eine Route bereits abgeglichen und geändert wurde. Aber es ist wahr, dass es ein bisschen verwirrend ist ...
pkozlowski.opensource
1
Sie können $routeParamsim Controller verwenden
meconroy
13
für Leute, ui-routerdie hierher kommen und kommen: $stateParamsist ein
guter
Wenn Sie so etwas wie das IonicFramework verwenden, werden Sie es $stateParams.keyin Ihrer Auflösungsfunktion verwenden, da es ui-routerwie @beret verwendet wird. Es dauerte eine Weile, bis mir klar wurde.
ObjectiveTruth