$ routeParams nie działa w funkcji rozwiązywania


138

Używam tej techniki do ładowania danych. Utworzyłem więc następującą funkcję rozwiązywania:

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

Problem polega na tym, że $routeParams.keyjest undefinedto moment resolvewykonania funkcji. Czy to jest poprawne / błąd? Jak mogę to naprawić?

Odpowiedzi:


273

Zamiast tego musisz użyć $route.current.params.key. $routeParamsJest aktualizowany tylko po trasa została zmieniona. Więc twój kod powinien wyglądać w następujący sposób:

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

7
Dziękuję Ci! Dlaczego więc potrzebuję $ routeParams?
fedor.belov

2
Wydaje mi się, że docs.angularjs.org/api/ng.$routeParams są fajnym API, gdy trasa została już dopasowana i zmieniona. Ale to prawda, że ​​jest to trochę zagmatwane ...
pkozlowski.opensource

1
Możesz użyć $routeParamswewnątrz kontrolera
meconroy

13
dla osób korzystających ui-routeri przyjeżdżających tutaj: $stateParamsjest do zrobienia
petrkotek

Jeśli używasz czegoś takiego jak Ionicframework, użyjesz $stateParams.keywewnątrz swojej funkcji rozwiązywania, ponieważ używa ona ui-routertak, jak powiedział @beret. Zajęło mi to trochę czasu, zanim zdałem sobie sprawę ...
ObjectiveTruth
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.