ui-router的动态参数

时间:2016-07-06 13:11:41

标签: angularjs angular-ui-router

我正在使用angular开发一个ui-router的搜索应用。

要求:

  • 搜索表单包含太多字段,所有字段都必须是可选字段。
  • 用户应与其他用户共享显示包含结果列表的页面的URL。 (所以我需要使用查询字符串)

所以我可以拥有像

这样的网址
path/to/url/list?p=123&v=876

path/to/url/list?c=yes&a=true&p=123

path/to/url/list?z=yes&c=yes&a=true&p=123

path/to/url/list?z=yes&v=876&a=true&p=123

无尽的组合。我知道我可以使用$ location.search()来获取json格式的所有参数。那样太好了!但问题是我如何用ui-router定义网址状态?明确定义url中的所有params都不是一个选项。我看过很多帖子但是我找不到具体的答案。

2 个答案:

答案 0 :(得分:0)

如果您从$location获取参数,则无需明确定义状态。

答案 1 :(得分:0)

我认为,最好的方法是使用' resolve' $ stateProvider配置的属性:

$stateProvider.state('mystate', {
  // Some code here
  resolve: {
     queryData: ['$location', ($location) => {
       $location.absUrl(); // Contains your full URI
       return true;
     }]
  }
});

它是一种初始化。之后,ui-router将剪切URI,但您将存储所需的数据。当用户直接在浏览器地址输入中传递URI时,这种情况也可以正常工作。

此外,您可以尝试使用$ urlMatcher设置$ urlRouterProvider用于此目的,但这将更加困难。