2016-02-12 36 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可能是你最好的選擇。 –