Truyền tham số bên trong $ location.path trong Angular


88

Tôi chỉ đang cố gắng sử dụng $location.path()trong bộ điều khiển của mình nhưng cũng chuyển một biến tùy chỉnh làm tham số. Vì vậy, nó sẽ trông giống như thế này, tôi đoán:

$scope.parameter = 'Foo';

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

Nhưng điều đó không hiệu quả. Có ai biết điều này được thực hiện như thế nào trong Angular không?

Câu trả lời:


183

để thêm các Tham số, bạn nên sử dụng $location.search()phương pháp:

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

$locationphương pháp này thể kết nối .

sản phẩm này:

/myURL/?param=value

kiểm tra chính tả, trên / dưới tình huống và các ràng buộc của nó
Mohsen dorparasti

Có cách nào để chuyển đổi điều này để url trông giống như / myUrl / value thay vì / myURL /? Param = value không?
AzzyDude

1
bạn có thể sử dụng .Path ('/ myURL /' + value). Nhưng sau đó nó không được gọi là tham số nữa.
mohsen dorparasti

2
Tôi đã phải loại bỏ dấu / để làm cho nó hoạt động. Mã này là bản sao hoạt động $location.path('/myURL').search({param: 'value'});
bodagetta

38

Một cách khác để thêm tham số vào url là:

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

và bạn có thể xác định tuyến đường đến myPage.html:

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

Sau đó, tham số có thể được truy cập trong newController như sau:

var param1= $routeParams.param1;

1
Câu trả lời đó có thêm tham số truy vấn hay thuộc tính tuyến không?
Phil

13

Ví dụ: nếu bạn cần đưa vào URL của mình một hoặc nhiều tham số:

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

trong url của bạn sẽ đại diện cho

/path?foo=valueFoo&baz=valueBaz

Để nhận thông số trong một bộ điều khiển khác:

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

  };

Điều này dẫn đến url

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

Bằng cách này, bạn không phải gõ thủ công các thông số bên trong dấu ngoặc


Tôi giả sử bạn đã tiêm $ stateParams vào bộ điều khiển của mình để điều này hoạt động.
FilipeG
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.