Plusieurs paramètres de chaîne de requête dans angularjs
J'ai du mal avec le passage et la lecture de plusieurs paramètres de chaîne de requête dans un itinéraire.
$routeProvider.when("/joboffers:keywords:location", {
controller: "jobOffersController",
templateUrl: "/App/Views/JobOffer/All.html"
});
Ceci est la page de recherche:
$scope.searchJobOffer = function () {
var vm = $scope.jobOfferSearchViewModel;
var path = "/joboffers?keywords=" +( vm.keywords || "") + "&location=" + (vm.location || "");
$location.path(path);
}
Et c'est le JobOffersController:
'use strict';
app.controller('jobOffersController', ['$scope', '$routeParams', 'jobOfferService', function ($scope, $routeParams, jobOfferService) {
$scope.jobOffers = [];
function init() {
var keywords = $routeParams.keywords;
var location = $routeParams.location;
}
init();
}]);
La lecture de l' $routeParams ne fonctionne pas du tout. Si je passe de "développeur" comme mot-clé et "New York", comme l'emplacement, l' $routeParam objet ressemble à ceci:
{keywords: "?keywords=developer&location=New Yor", location: "k"}
Quelqu'un peut-il me dire ce que je fais mal? Merci à l'avance.
P. S.
Est-il possible que ce soit à cause d'un mal configuré route?
Quand j'ai naviguer via le searchJobOffer
fonction, il encode l'URL: http://localhost:49380/#/joboffers%3Fkeywords=developer&location=london
et si j'essaie d'utiliser cette url http://localhost:49380/#/joboffers?keywords=developer&location=london
, le système de routage me dépose à la route par défaut (#/home)
stackoverflow.com/a/24981775/356380
$lieu.recherche() renvoie un objet vide.
$routeParams
ne sont mises à jour après une modification du parcours se termine avec succès. Vous assurer que c'est bien le cas?Depuis le contrôleur est chargé, je suis à peu près sûr. Mais juste pour le tester, j'ai déplacé le init() pour un setTimeout() avec les 5 secondes, et le $routeParams a la même valeur.
OriginalL'auteur laszlokiss88 | 2014-11-01
Vous devez vous connecter pour publier un commentaire.
$routeProvider ne correspond pas sur les chaînes de requête, seules les routes. Aussi, vous êtes à la définition d'une pleine
url
à $emplacement.path() et $lieu.path() ne prend que lapath
une partie de l'url. Pour définir l'URL en entier, y compris la chaîne de requête, vous devez utiliser$location.url()
.Voici quelques options:
1. Utiliser des URLs propres au lieu
2. Seulement correspondre les offres d'emploi et de chemin de tirer les params de $lieu.recherche (la)
(notez l'utilisation de
$location.url()
au lieu de$location.path()
)3. Si vous avez besoin de faire correspondre l'itinéraire ET la chaîne de requête, essayez quelque chose de plus robuste comme angular-ui-router
Super réponse....
OriginalL'auteur theJoeBiz