2013-10-02 65 views
14

在我的AngularJS應用程序的路由配置中,大部分路由都是使用reloadOnSearch選項設置爲false來定義的,因爲大部分時間頁面在搜索參數時不應重新加載改變。雖然選項reloadOnSearch設置爲false

但在極少數情況下,我需要一個不同的行爲,我需要重新加載URL,但只更改了搜索參數。

有沒有辦法迫使AngularJS雖然reloadOnSearch設置爲false重新加載網址是什麼?

回答

15

我還沒有嘗試過,但可以嘗試的是。

$routeUpdate事件處理程序中調用$route.reload()方法,如果您知道應導致刷新路由的條件。

+0

你是什麼意思與$路由更新事件處理程序,我怎麼可以配置它的行爲或者是它AngularJS核心的一部分?我不想更改框架本身以便能夠稍後更新版本。 – Flo

+0

好的,現在我明白了你的意思。我應該聽取$ routeUpdate事件,然後在必要時重新加載。 – Flo

+1

基本上你可以隨時做$ route.reload()。什麼時候該做就取決於你。由於您想要在搜索查詢更改的情況下刷新視圖,請正確。你怎麼知道搜索查詢已經改變。搜索查詢更新時會引發此事件。 – Chandermani

2

這也是工作

app.controller('appCtrl',function($scope,$window){ 
      $scope.reload =function(){ 
       $window.location.reload(); 
      } 
}) 

HTML

<div ng-click="reload()">reload</div> 
+4

雖然問題並沒有形成,以澄清他/她是否要重新加載路線或整個應用程序,我很確定他想重新加載路線。您的解決方案重新初始化整個應用程序。 – epitka

13

如果你正在嘗試當用戶點擊一個鏈接,設置鏈接的target屬性來強制重新加載。這將觸發重載無論reloadOnSearch =假的

<a href="/same_page?different_param=123" target="_self">Reload</a> 
+0

男人!你讓我今天一整天都感覺很好!這確實是一種黑客攻擊,但它運行的很好,足以滿足一些有限的需求。謝謝! –

+0

對我來說訣竅就好了!謝謝。 –

+1

這將重新加載整個應用程序,而不僅僅是路線。非hacky的方式是使用 ui-sref-opts =「{reload:true}」 – BtnMike

相關問題