Meneruskan parameter di dalam $ location.path di Angular

88

Saya hanya mencoba menggunakan $location.path()di pengontrol saya tetapi juga meneruskan variabel khusus sebagai parameter. Jadi akan terlihat seperti ini saya kira:

$scope.parameter = 'Foo';

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

Tapi itu tidak berhasil. Adakah yang tahu bagaimana ini seharusnya dilakukan di Angular?

AzzyDude
sumber

Jawaban:

183

untuk menambahkan Parameter, Anda harus menggunakan $location.search()metode seperti ini:

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

$locationmetode dapat dirantai .

hasil ini:

/myURL/?param=value
mohsen dorparasti
sumber
periksa ejaan,
Huruf besar
Apakah ada cara untuk mengubahnya sehingga url terlihat seperti / myUrl / value daripada / myURL /? Param = value?
AzzyDude
1
Anda dapat menggunakan .Path ('/ myURL /' + value). tapi kemudian tidak disebut parameter lagi.
mohsen dorparasti
2
Saya harus menghapus jejak / agar ini berfungsi. Kode ini adalah salinan pekerjaan $location.path('/myURL').search({param: 'value'});
bodagetta
38

Cara lain untuk menambahkan parameter ke url adalah:

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

dan Anda dapat menentukan rute ke myPage.html:

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

Parameter kemudian dapat diakses di newController sebagai berikut:

var param1= $routeParams.param1;
krzysiek.ste
sumber
1
Apakah jawaban itu menambahkan parameter kueri atau atribut rute?
Phil
13

Misalnya jika Anda perlu memasukkan satu atau beberapa parameter URL Anda:

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

di url Anda akan mewakili

/path?foo=valueFoo&baz=valueBaz

Untuk mendapatkan params di pengontrol lain:

var urlParams = $location.search();


urlParams.foo will return valueFoo

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

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

  };

Ini menghasilkan url

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

Dengan cara ini Anda tidak perlu mengetikkan parameter di dalam tanda kurung secara manual

FilipeG
sumber
Saya berasumsi Anda memiliki $ stateParams yang disuntikkan pada pengontrol Anda agar ini berfungsi.
FilipeG