Przekazywanie parametru wewnątrz $ location.path w Angular


88

Po prostu próbuję użyć $location.path()w moim kontrolerze, ale także przekazuję zmienną niestandardową jako parametr. Tak więc wyglądałoby to tak:

$scope.parameter = 'Foo';

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

Ale to nie działa. Czy ktoś wie, jak należy to zrobić w Angular?

Odpowiedzi:


183

aby dodać Parametry należy użyć $location.search()metody, więc:

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

$locationmetody można łączyć w łańcuchy .

ten produkt:

/myURL/?param=value

sprawdź pisownię,
wielkie / małe

Czy istnieje sposób na przekonwertowanie tego, aby adres URL wyglądał jak / myUrl / value zamiast / myURL /? Param = value?
AzzyDude

1
możesz użyć .Path ('/ myURL /' + wartość). ale wtedy nie jest to już nazywane parametrem.
mohsen dorparasti

2
Musiałem usunąć końcowe /, aby to zadziałało. Ten kod jest kopią roboczą $location.path('/myURL').search({param: 'value'});
bodagetta

38

Innym sposobem dodania parametru do adresu URL jest:

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

i możesz zdefiniować trasę do myPage.html:

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

Dostęp do parametru można następnie uzyskać w newController w następujący sposób:

var param1= $routeParams.param1;

1
Czy to odpowiedź na dodanie parametru zapytania lub atrybutu trasy?
Phil

13

Na przykład, jeśli chcesz umieścić w adresie URL jeden lub więcej parametrów:

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

w twoim adresie URL będzie reprezentować

/path?foo=valueFoo&baz=valueBaz

Aby uzyskać parametry w innym kontrolerze:

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

  };

Powoduje to URL

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

W ten sposób nie musisz ręcznie wpisywać parametrów w nawiasach


Zakładam, że do kontrolera wstrzyknięto $ stateParams, aby to zadziałało.
FilipeG
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.