it-roy-ru.com

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

Как извлечь параметры запроса, используя i-router для AngularJS?

В собственной службе AngularJS $location я сделал:

($ Location.search ()). UID

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

61
Per Quested Aronsson

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

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

51
Nate Abele

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

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

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

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

{ myParam: 'value' }
95
thisgeek

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

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

ниже приведен пример из вики-интерфейса ui-router:

// 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
9
SStanley

Вам также необходимо определить параметры запроса в $ 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

6
fredtma

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

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

url: '/path?name'

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

$stateParams.name

2
Partha Roy

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

$state.params[<PARAMETER_NAME>]

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

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