我正在使用Angular UI路由器,這在大多數情況下運行良好。但是,我有一種情況,我不知道提前查詢字符串參數的名稱。Angular UI路由器 - 允許任何查詢字符串參數
所以通常與UI路由器,你會定義一個路線是這樣的:
$stateProvider.state('test', {
\t url: '/test?testQueryStringParam',
\t templateUrl: 'Test.html',
\t controller: 'TestController'
});
然後在我的控制器使用我$ stateParams可以訪問testQueryStringParam。
但是,在UI路由器中,您無法訪問路由定義中未指定的任何查詢字符串參數。
Angular框架附帶的路由器允許您執行此操作。所以我試圖用我的UI路由器定義使用$ location服務。這確實是一些工作。
當我想添加一個查詢字符串參數使用:
$location.search("paramName", "paramValue");
當我想我只是使用查詢字符串值:
$location.search()
這會更新URL,但不會重新實例化控制器(如$ state.go($ state.current,{},{reload:true})would)。這似乎不是一個大問題,因爲我可以自己重新加載數據。但是,如果您在瀏覽器中使用後退按鈕,它將再次更改URL,但不會重新實例化控制器。
反正是有
我能得到這個只用UI路由器工作?
獲得使用$ location實際重新實例化控制器的解決方法。
作爲最後的手段,我也嘗試指導更新window.location,但這刷新整個頁面是不可接受的。
感謝