Подтвердить что ты не робот

Как извлечь параметры запроса с помощью ui-router для AngularJS?

Как извлечь параметры запроса с помощью ui-router для AngularJS?

В собственном сервисе $location у AngularJS я сделал:

($ location.search()). UID

чтобы извлечь параметр uid из URL-адреса. Каков соответствующий код для ui-router?

4b9b3361

Ответ 1

Если вы не привязываетесь к параметрам запроса (см. документацию), вы не получаете доступ к ним напрямую через $state или $stateParams. Используйте службу $location.

EDIT: В документы, если вы хотите захватить параметры запроса в $stateParams, вы можете добавить a ? к вашему url и назовите каждый параметр запроса, разделенный &, то есть url: "/foo?bar&baz".

Ответ 2

См. раздел параметров запроса документации по маршрутизации URL.

Вы также можете указать параметры в качестве параметров запроса, следуя "?":

url: "/contacts?myParam"
// will match to url of "/contacts?myParam=value"

В этом примере, если url /contacts?myParam=value, тогда значение $state.params будет:

{ myParam: 'value' }

Ответ 3

ui-router не проводит различия между различными типами параметров в URL-адресе, например, в службе $location.

В ваших контроллерах вы можете использовать службу $stateParams, чтобы получить доступ ко всем различным типам параметров в вашем URL-адресе.

ниже приведен пример из wi-router wiki:

// Then you navigated your browser to:
'/users/123/details/default/0?from=there&to=here'

// Your $stateParams object would be
{ id:'123', type:'default', repeat:'0', from:'there', to:'here' }

Итак, в вашем случае для поиска параметра uid просто используйте:

$scope.uid = $stateParams.uid

Ответ 4

Вам также необходимо определить параметры запроса в $ stateProvider, например:

state('new-qs', {
  url: '/new?portfolioId&param1&param2',
  templateUrl: 'new.html',
  controller: function($scope, $stateParams) {
     $scope.portfolioId = $stateParams.portfolioId;
     $scope.param1 = $stateParams.param1;
     $scope.param2 = $stateParams.param2;
  }
})

как объясняет benfoster.io

Ответ 5

Вы можете получить его из $stateParams, но в этом случае вам также нужно объявить переменную запроса на маршруте.

объявить в маршруте, как -

url: '/path?name'

для получения имени в контроллере введите $stateParams, и используйте как -

$stateParams.name

Ответ 6

Для последних версий AngularJS и ui-router я думаю, что вы можете просто использовать $state для доступа к параметрам:

$state.params[<PARAMETER_NAME>]

где в app.js вы определили состояние следующим образом:

.state('app.name', {
    url: '/:some_param_id',
    templateUrl: '/templates/home.html'
})