$ routeParams ne fonctionne pas dans la fonction de résolution

138

J'utilise cette technique pour charger des données. J'ai donc créé la fonction de résolution suivante:

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

Le problème est que $routeParams.keyc'est undefinedau moment de resolvel'exécution de la fonction. Est-ce correct / bug? Comment puis-je y remédier?

fedor.belov
la source

Réponses:

273

Vous devez utiliser à la $route.current.params.keyplace. Le $routeParamsn'est mis à jour qu'après la modification d' un itinéraire. Donc, votre code devrait ressembler à ces lignes:

NoteController.resolve = {
    note: function($route, Note) {
         return Note.get($route.current.params.key);
    }
}
pkozlowski.opensource
la source
7
Je vous remercie! Pourquoi ai-je besoin de $ routeParams alors?
fedor.belov
2
Je suppose que docs.angularjs.org/api/ng.$routeParams est une API intéressante lorsqu'une route a déjà été mise en correspondance et modifiée. Mais c'est vrai que c'est un peu déroutant ...
pkozlowski.opensource
1
Vous pouvez utiliser $routeParamsà l'intérieur du contrôleur
meconroy
13
pour les personnes qui utilisent ui-routeret viennent ici: $stateParamsc'est la voie à suivre
petrkotek
Si vous utilisez quelque chose comme le Ionicframework, vous utiliserez $stateParams.keydans votre fonction de résolution car il utilise ui-routercomme @beret l'a dit. M'a mis du temps à réaliser ..
ObjectiveTruth