Как извлечь параметры запроса с помощью ui-router для AngularJS?
В собственном сервисе $location
у AngularJS я сделал:
($ location.search()). UID
чтобы извлечь параметр uid из URL-адреса. Каков соответствующий код для ui-router?
Как извлечь параметры запроса с помощью ui-router для AngularJS?
В собственном сервисе $location
у AngularJS я сделал:
($ location.search()). UID
чтобы извлечь параметр uid из URL-адреса. Каков соответствующий код для ui-router?
Если вы не привязываетесь к параметрам запроса (см. документацию), вы не получаете доступ к ним напрямую через $state
или $stateParams
. Используйте службу $location
.
EDIT: В документы, если вы хотите захватить параметры запроса в $stateParams
, вы можете добавить a ?
к вашему url
и назовите каждый параметр запроса, разделенный &
, то есть url: "/foo?bar&baz"
.
См. раздел параметров запроса документации по маршрутизации URL.
Вы также можете указать параметры в качестве параметров запроса, следуя "?":
url: "/contacts?myParam" // will match to url of "/contacts?myParam=value"
В этом примере, если url /contacts?myParam=value
, тогда значение $state.params
будет:
{ myParam: 'value' }
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
Вам также необходимо определить параметры запроса в $ stateProvider, например:
state('new-qs', {
url: '/new?portfolioId¶m1¶m2',
templateUrl: 'new.html',
controller: function($scope, $stateParams) {
$scope.portfolioId = $stateParams.portfolioId;
$scope.param1 = $stateParams.param1;
$scope.param2 = $stateParams.param2;
}
})
как объясняет benfoster.io
Вы можете получить его из $stateParams, но в этом случае вам также нужно объявить переменную запроса на маршруте.
объявить в маршруте, как -
url: '/path?name'
для получения имени в контроллере введите $stateParams, и используйте как -
$stateParams.name
Для последних версий AngularJS и ui-router я думаю, что вы можете просто использовать $state
для доступа к параметрам:
$state.params[<PARAMETER_NAME>]
где в app.js вы определили состояние следующим образом:
.state('app.name', {
url: '/:some_param_id',
templateUrl: '/templates/home.html'
})