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

fedor.belov
źródło

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);
    }
}
pkozlowski.opensource
źródło
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