我很好奇是否有办法配置UI-Router接受应用程序中所有路由的查询字符串参数。
对于上下文,我在所有应用程序的路由上都有一个resolve
处理程序,它接受一个查询参数并根据该参数触发某些行为。这是我的应用程序的州定义的简化版本:
$stateProvider
.state('state1', {
url: '/state1?myparam'
resolve: myHandler,
templateUrl: 'state1.html',
controller: 'Ctrl1',
})
.state('state2', {
url: '/state2?myparam',
resolve: myHandler,
// [etc]
})
.state('state2.child1', {
url: '/state2/child1?myparam',
resolve: myHandler,
// [etc]
})
// [and a bunch more similar '.state's];
这很好用,我可以通过myparam
访问myHandler
内的$stateParams
值。将?myparam
添加到每个路线定义&{39} url
中似乎有点重复。
有什么建议吗?
答案 0 :(得分:1)
您是否尝试过使用$urlMatcherFactory
。
段:
var urlMatcher = $urlMatcherFactory.compile("/state2/:id?param1");
$stateProvider.state('myState', {
url: urlMatcher
});
希望query params和urlMatcherFactory file帮助您。
P.S:我没有测试这段代码。