如何在ui-router外部使用查询参数

时间:2016-02-12 03:57:11

标签: angularjs angular-ui-router

我有一个基于ui-router的Angular应用程序,我想维护一些与路由无关的状态。

所以我们假设网址为#/profile?color=red。这意味着状态是“配置文件”,应用程序的颜色应该是绿色。如果URL更改为$location,则状态或ng视图或与当前路由关联的控制器的任何内容都不会更改,但应通知完全独立的代码(并且它将更改body标记的类)。每个可能的状态都有相同的参数;它与国家正交。

我可以只看void*并自己解析所有内容,但我想知道ui-router或$ state或某些设施是否会使这更容易。

(顺便说一句,对任何打算解释我为什么不想做我想做的事情的人来说,不,其实我确实想做我想做的事,所以谢谢 - 再见。)

1 个答案:

答案 0 :(得分:0)

你绝对可以完成$location尝试做的事情。我可能会使用 $ stateChangeStart ,这样你就可以减少解析,以达到你想要的目的:

$rootScope.$on('stateChangeStart', function(event, toState, toParams) {
  if (toParams.color === 'red') {
    //etc
  }
}

关于这个解决方案的一个重要部分是你可以通过这种方式在任何 toState 中听取这些参数,这满足了你的要求,即无论状态如何,这个参数都适用。

<强> stateChangeStart documentation