Passaggio del parametro all'interno di $ location.path in Angular


88

Sto solo cercando di utilizzare $location.path()nel mio controller ma anche di passare una variabile personalizzata come parametro. Quindi sarebbe simile a questo immagino:

$scope.parameter = 'Foo';

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

Ma non funziona. Qualcuno sa come dovrebbe essere fatto in Angular?

Risposte:


183

per aggiungere parametri dovresti usare il $location.search()metodo così:

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

$locationi metodi sono concatenabili .

questo produce:

/myURL/?param=value

controllo ortografico, lettere maiuscole / minuscole e relative associazioni
mohsen dorparasti

C'è un modo per convertirlo in modo che l'URL sia / myUrl / value invece di / myURL /? Param = value?
AzzyDude

1
puoi usare .Path ('/ myURL /' + value) .ma poi non si chiama più parametro.
mohsen dorparasti

2
Ho dovuto rimuovere il trailing / per farlo funzionare. Questo codice è la copia funzionante $location.path('/myURL').search({param: 'value'});
bodagetta

38

L'altro modo per aggiungere parametri all'URL è:

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

e puoi definire il percorso per myPage.html:

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

È quindi possibile accedere al parametro in newController come segue:

var param1= $routeParams.param1;

1
Quella risposta sta aggiungendo un parametro di query o un attributo di route?
Phil

13

Ad esempio, se devi inserire nel tuo URL uno o più parametri:

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

nel tuo URL rappresenterà

/path?foo=valueFoo&baz=valueBaz

Per ottenere i parametri in un altro controller:

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

  };

Ciò si traduce nell'URL

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

In questo modo non è necessario digitare manualmente i parametri tra parentesi


Suppongo che tu abbia $ stateParams iniettato sul tuo controller affinché funzioni.
FilipeG
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.