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

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.