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


88

Я просто намагаюся використовувати $location.path()у своєму контролері, але також передаю користувацьку змінну як параметр. Отже, це могло б виглядати приблизно так:

$scope.parameter = 'Foo';

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

Але це не працює. Хтось знає, як це повинно бути зроблено в Angular?

Відповіді:


183

для додавання параметрів слід використовувати $location.search()метод так:

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

$locationметоди придатні до мережі .

ця продукція:

/myURL/?param=value

перевірити правопис, верхній / нижній регістр та його прив’язки
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;

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

Таким чином вам не потрібно вручну вводити параметри всередині дужок


Я припускаю, що на ваш контролер введено $ stateParams, щоб це працювало.
FilipeG
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.