Passer un paramètre dans $ location.path dans Angular


88

J'essaye juste d'utiliser $location.path() dans mon contrôleur mais aussi en passant une variable personnalisée en tant que paramètre. Donc, ça ressemblerait à quelque chose comme ça, je suppose:

$scope.parameter = 'Foo';

$location.path('/myURL/' + $scope.parameter);

Mais ça ne marche pas. Quelqu'un sait-il comment cela est censé être fait dans Angular?

Réponses:


183

pour ajouter des paramètres, vous devez utiliser la $location.search()méthode ainsi:

$location.path('/myURL/').search({param: 'value'});

$locationles méthodes sont chaînables .

ce produit:

/myURL/?param=value

vérifier l'orthographe, les majuscules / minuscules et leurs reliures
mohsen dorparasti

Existe-t-il un moyen de convertir cela pour que l'URL ressemble à / myUrl / value au lieu de / myURL /? Param = value?
AzzyDude

1
vous pouvez utiliser .Path ('/ myURL /' + value). mais alors il n'est plus appelé paramètre.
mohsen dorparasti

2
J'ai dû supprimer la fin / pour que cela fonctionne. Ce code est la copie de travail $location.path('/myURL').search({param: 'value'});
bodagetta

38

L'autre façon d'ajouter un paramètre à l'URL est:

 $location.path('/myURL/'+ param1);

et vous pouvez définir la route vers myPage.html:

config(['$routeProvider', function ($routeProvider) {
        $routeProvider.when('/myURL/:param1', {
            templateUrl: 'path/myPage.html',
            controller: newController
            });
    }]);

Le paramètre est alors accessible dans newController comme suit:

var param1= $routeParams.param1;

1
Cette réponse ajoute-t-elle un paramètre de requête ou un attribut d'itinéraire?
Phil

13

Par exemple si vous devez mettre dans votre URL un ou plusieurs paramètres:

$location.path('/path').search({foo: 'valueFoo', baz:'valueBaz'})

dans votre URL représentera

/path?foo=valueFoo&baz=valueBaz

Pour obtenir des paramètres dans un autre contrôleur:

var urlParams = $location.search();


urlParams.foo will return valueFoo

urlParams.baz will return valueBaz

2
  function pathToSomewhere() {
    $stateParams.name= vm.name; //john
    $stateParams.phone= vm.phone; //1234
    $stateParams.dateOfBirth= getDoB(); //10-10-1990

    $location.path("/somewhere/").search($stateParams);

  };

Cela se traduit par l'URL

http://middle-of-nowhere.com/#/somewhere/?name=john&phone=1234&dateOfBirth=10-10-1990

De cette façon, vous n'avez pas à taper manuellement les paramètres entre crochets


Je suppose que vous avez $ stateParams injecté sur votre contrôleur pour que cela fonctionne.
FilipeG
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.