如何使用ui-router为AngularJS提取查询参数?
如何使用ui-router为AngularJS提取查询参数?
在AngularJS自己的$location
服务中,我做了:
($ location.search())。UID
从URL中提取参数uid。 ui-router的相应代码是什么?
除非你绑定到查询参数(请参阅文档),否则不要直接通过$state
或$stateParams
来访问它们。 使用$location
服务。
编辑:每个文档 ,如果你想捕获$stateParams
查询参数,你可以追加一个?
到你的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不区分$ location服务中的不同types的参数。
在您的控制器中,您可以使用$ stateParams服务来访问您url中所有不同types的参数。
下面是ui-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' }
所以在你的情况下,finduid参数只需使用:
$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得到它,但是在这种情况下,你也必须在路由中声明查询variables。
在路由中声明像 –
url: '/path?name'
为获取控制器中的名字注入$ stateParams,并使用像 –
$stateParams.name