Angular'da $ location.path içine parametre geçirme


88

Sadece $location.path()denetleyicimde kullanmaya çalışıyorum, aynı zamanda parametre olarak özel bir değişkeni de iletiyorum. Sanırım şöyle bir şeye benzeyecekti:

$scope.parameter = 'Foo';

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

Ama bu işe yaramıyor. Bunun Angular'da nasıl yapılması gerektiğini bilen var mı?

Yanıtlar:


184

Parametreler eklemek için $location.search()yöntemi kullanmalısınız, böylece:

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

$locationyöntemler zincirlenebilir .

bu ürün:

/myURL/?param=value

yazımı denetle, Büyük / Küçük harf ve bağlamaları
mohsen dorparasti

Bunu, url'nin / myURL /? Param = değer yerine / myUrl / değer gibi görünmesi için dönüştürmenin bir yolu var mı?
AzzyDude

1
.Path ('/ myURL /' + value) kullanabilirsiniz, ancak artık parametre olarak adlandırılmaz.
mohsen dorparasti

2
Bunun işe yaraması için / izini kaldırmam gerekiyordu. Bu kod çalışan bir kopyadır $location.path('/myURL').search({param: 'value'});
bodagetta

38

URL'ye parametre eklemenin başka bir yolu şudur:

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

ve myPage.html için rota tanımlayabilirsiniz:

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

Daha sonra parametreye newController'da aşağıdaki şekilde erişilebilir:

var param1= $routeParams.param1;

1
Bu cevap, bir sorgu parametresi veya bir yol niteliği mi ekliyor?
Phil

13

Örneğin, URL'nize bir veya daha fazla parametre girmeniz gerekirse:

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

URL'nizde temsil edecek

/path?foo=valueFoo&baz=valueBaz

Başka bir denetleyicide parametreler almak için:

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

  };

Bu url ile sonuçlanır

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

Bu şekilde parametreleri parantez içine manuel olarak yazmanıza gerek kalmaz.


Bunun çalışması için kontrol cihazınıza $ stateParams enjekte edildiğinizi varsayıyorum.
FilipeG
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.