Übergabe des Parameters in $ location.path in Angular

88

Ich versuche nur, $location.path()in meinem Controller zu verwenden, übergebe aber auch eine benutzerdefinierte Variable als Parameter. Es würde also ungefähr so ​​aussehen, denke ich:

$scope.parameter = 'Foo';

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

Das geht aber nicht Weiß jemand, wie das in Angular gemacht werden soll?

AzzyDude
quelle

Antworten:

183

Um Parameter hinzuzufügen, sollten Sie folgende $location.search()Methode verwenden:

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

$locationMethoden sind verkettbar .

dieses Produkt:

/myURL/?param=value
Mohsen Dorparasti
quelle
Rechtschreibprüfung, Groß- / Kleinschreibung und ihre Bindungen
überprüfen
Gibt es eine Möglichkeit, dies so zu konvertieren, dass die URL wie / myUrl / value anstelle von / myURL /? Param = value aussieht?
AzzyDude
1
Sie können .Path ('/ myURL /' + Wert) verwenden, aber dann heißt es nicht mehr Parameter.
Mohsen Dorparasti
2
Ich musste das Trailing entfernen, damit dies funktioniert. Dieser Code ist die Arbeitskopie $location.path('/myURL').search({param: 'value'});
Bodagetta
38

Die andere Möglichkeit, der URL Parameter hinzuzufügen, ist:

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

und Sie können die Route zu myPage.html definieren:

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

Auf den Parameter kann dann in newController wie folgt zugegriffen werden:

var param1= $routeParams.param1;
krzysiek.ste
quelle
1
Fügt diese Antwort einen Abfrageparameter oder ein Routenattribut hinzu?
Phil
13

Wenn Sie beispielsweise einen oder mehrere Parameter in Ihre URL eingeben müssen:

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

in Ihrer URL wird darstellen

/path?foo=valueFoo&baz=valueBaz

So erhalten Sie Parameter in einem anderen Controller:

var urlParams = $location.search();


urlParams.foo will return valueFoo

urlParams.baz will return valueBaz
Lucas Pires
quelle
2
  function pathToSomewhere() {
    $stateParams.name= vm.name; //john
    $stateParams.phone= vm.phone; //1234
    $stateParams.dateOfBirth= getDoB(); //10-10-1990

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

  };

Dies führt zur URL

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

Auf diese Weise müssen Sie die Parameter in Klammern nicht manuell eingeben

FilipeG
quelle
Ich gehe davon aus, dass Sie $ stateParams auf Ihren Controller injiziert haben, damit dies funktioniert.
FilipeG