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.