Comment extraire les paramètres de requête à l'aide de ui-router pour AngularJS?
Dans le service $location
propre à AngularJS, j'ai:
($ location.search ()). uid
extraire le paramètre uid d'une URL. Quel est le code correspondant pour ui-router?
Sauf si vous vous liez aux paramètres de la requête (voir la documentation), vous n'y accédez pas directement via $state
ou $stateParams
. Utilisez le service $location
.
EDIT: Per la documentation , si vous souhaitez capturer les paramètres de requête dans $stateParams
, vous pouvez ajouter un ?
à votre url
et nommer chaque paramètre de requête, séparé par &
, i.e. url: "/foo?bar&baz"
.
Voir la section relative aux paramètres de requête de la Documentation de routage d'URL .
Vous pouvez également spécifier des paramètres en tant que paramètres de requête, après un '?':
url: "/contacts?myParam" // will match to url of "/contacts?myParam=value"
Pour cet exemple, si l'URL est /contacts?myParam=value
, la valeur de $state.params
sera:
{ myParam: 'value' }
ui-router ne fait pas la différence entre différents types de paramètres dans une URL, comme le fait le service $ location.
Dans vos contrôleurs, vous pouvez utiliser le service $ stateParams pour accéder à tous les types de paramètres de votre URL.
vous trouverez ci-dessous un exemple tiré du wiki 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' }
Donc, dans votre cas, pour trouver le paramètre uid, utilisez simplement:
$scope.uid = $stateParams.uid
Vous devez également définir les paramètres de requête dans $ stateProvider, par exemple.
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;
}
})
comme expliqué par benfoster.io
Vous pouvez l'obtenir à partir de $ stateParams, mais vous devez également déclarer la variable de requête dans la route.
déclarer en route comme -
url: '/path?name'
pour obtenir le nom dans le contrôleur injecter $ stateParams, et utiliser comme -
$stateParams.name
Pour les versions récentes de AngularJS et ui-router, je pense que vous pouvez simplement utiliser $state
pour accéder aux paramètres:
$state.params[<PARAMETER_NAME>]
où dans app.js vous avez défini l'état comme suit:
.state('app.name', {
url: '/:some_param_id',
templateUrl: '/templates/home.html'
})