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

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.