Передача параметра внутри $ location.path в Angular

88

Я просто пытаюсь использовать $location.path()в своем контроллере, но также передаю пользовательскую переменную в качестве параметра. Думаю, это будет выглядеть примерно так:

$scope.parameter = 'Foo';

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

Но это не работает. Кто-нибудь знает, как это должно быть сделано в Angular?

AzzyDude
источник

Ответы:

183

чтобы добавить параметры, вы должны использовать $location.search()метод так:

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

$locationметоды объединяются в цепочку .

этот продукт:

/myURL/?param=value
Mohsen Dorparasti
источник
проверьте орфографию, верхний / нижний регистр и его привязки
mohsen dorparasti
Есть ли способ преобразовать это так, чтобы URL-адрес выглядел как / myUrl / value вместо / myURL /? Param = value?
AzzyDude
1
вы можете использовать .Path ('/ myURL /' + value). но тогда он больше не называется параметром.
mohsen dorparasti
2
Мне пришлось удалить завершающий /, чтобы заставить это работать. Этот код является рабочей копией $location.path('/myURL').search({param: 'value'});
bodagetta
38

Другой способ добавить параметр в url:

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

и вы можете определить маршрут к myPage.html:

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

После этого параметр можно будет получить в newController следующим образом:

var param1= $routeParams.param1;
krzysiek.ste
источник
1
Этот ответ добавляет параметр запроса или атрибут маршрута?
Фил
13

Например, если вам нужно ввести в свой URL один или несколько параметров:

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

в вашем URL будет представлять

/path?foo=valueFoo&baz=valueBaz

Чтобы получить параметры в другом контроллере:

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

  };

Это приводит к URL-адресу

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

Таким образом, вам не нужно вручную вводить параметры в скобках.

FilipeG
источник
Я предполагаю, что у вас есть $ stateParams, введенные в ваш контроллер, чтобы это работало.
FilipeG