Angular UI-Router:在每个url上接受相同的查询参数

时间:2015-12-03 03:44:23

标签: angularjs angular-ui-router

我很好奇是否有办法配置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中似乎有点重复。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用$urlMatcherFactory

段:

var urlMatcher = $urlMatcherFactory.compile("/state2/:id?param1");
$stateProvider.state('myState', {
    url: urlMatcher 
});

希望query paramsurlMatcherFactory file帮助您。

P.S:我没有测试这段代码。