2016-02-12 35 views
0

我有一个基于ui路由器的Angular应用程序,我想维护一些与路由无关的状态。我如何使用查询参数之外的UI路由器

那么我们假设网址是#/profile?color=green。这意味着状态是“配置文件”,应用程序的颜色应该是绿色的。如果URL更改为#/profile?color=red,那么与当前路由关联的状态或ng-view或控制器都不会发生变化,但应该通知完全独立的一段代码(并且它会更改body标签的类)。每个可能的状态都有相同的参数;它与状态正交。

我可以只看$location并自己解析所有的东西,但我想知道是否某些ui-router或$ state或其他设备会使这更容易。 (顺便说一句,对于任何计划解释为什么我不想做我想做的事情的人,不,事实上,我确实想做我想做的事情,所以谢谢 - 凯 - 凯 - 再见)

回答

0

你一定可以完成你想要做的事$location。我可能会使用$ stateChangeStart,这样对你到底来完成你要查找的内容,你可以少做解析:

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

关于这个解决方案的很大一部分是你可以监听这些PARAMS以这种方式通过任何到状态满足您的要求,该参数适用于任何状态。

stateChangeStart documentation

+0

要获得stateChangeStart工作,我将不得不每一个状态标记为以“色”为参数(应用程序有43个不同的国家!),每当颜色的变化,NG-视图会重新加载,这是不理想的。 – Malvolio

+0

我看到...是的,你是对的,那么$ location可能是你最好的选择。 –