我有一个基于ui-router的Angular应用程序,我想维护一些与路由无关的状态。
所以我们假设网址为#/profile?color=red
。这意味着状态是“配置文件”,应用程序的颜色应该是绿色。如果URL更改为$location
,则状态或ng视图或与当前路由关联的控制器的任何内容都不会更改,但应通知完全独立的代码(并且它将更改body标记的类)。每个可能的状态都有相同的参数;它与国家正交。
我可以只看void*
并自己解析所有内容,但我想知道ui-router或$ state或某些设施是否会使这更容易。
(顺便说一句,对任何打算解释我为什么不想做我想做的事情的人来说,不,其实我确实想做我想做的事,所以谢谢 - 再见。)
答案 0 :(得分:0)
你绝对可以完成$location
尝试做的事情。我可能会使用 $ stateChangeStart ,这样你就可以减少解析,以达到你想要的目的:
$rootScope.$on('stateChangeStart', function(event, toState, toParams) {
if (toParams.color === 'red') {
//etc
}
}
关于这个解决方案的一个重要部分是你可以通过这种方式在任何 toState 中听取这些参数,这满足了你的要求,即无论状态如何,这个参数都适用。