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?

AzzyDude
źródło

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
mohsen dorparasti
źródło
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;
krzysiek.ste
źródło
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
Lucas Pires
źródło
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

FilipeG
źródło
Zakładam, że do kontrolera wstrzyknięto $ stateParams, aby to zadziałało.
FilipeG