2013-10-02 12 views
14

Nella configurazione della rotta della mia applicazione AngularJS la maggior parte dei percorsi è definita con l'opzione reloadOnSearch impostata su false come la maggior parte delle volte che una pagina non dovrebbe ricaricare quando il parametro di ricerca cambiato.Forza AngularJS per ricaricare una rotta anche se l'opzione reloadOnSearch è impostata su false

Ma in rare circostanze ho bisogno di un comportamento diverso in cui ho bisogno di ricaricare l'URL anche se solo i parametri di ricerca sono cambiati.

C'è un modo per forzare AngularJS a ricaricare l'URL sebbene reloadOnSearch sia impostato su false?

risposta

15

Non l'ho provato, ma qualcosa che si può provare è.

Nel gestore di eventi $routeUpdate chiamare il metodo $route.reload() se si conosce la condizione che dovrebbe causare l'aggiornamento del percorso.

+0

Che cosa si intende con il gestore di eventi $ routeUpdate, come posso configurare il suo comportamento o è parte del core AngularJS? Non voglio cambiare il framework stesso per poter aggiornare la versione in seguito. – Flo

+0

Ah ok, ora ho capito cosa intendevi. Dovrei ascoltare l'evento $ routeUpdate e quindi ricaricare quando necessario. – Flo

+1

Fondamentalmente puoi fare $ route.reload() ogni volta che vuoi. Quando fare è fino a te. Dal momento che si desidera aggiornare la vista in un caso quando la query di ricerca cambia, a destra. Come faresti a sapere che la query di ricerca è cambiata. Questo evento viene generato quando la query di ricerca viene aggiornata. – Chandermani

2

Questo è anche il lavoro

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

html

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

Sebbene la domanda non è stata formata in modo tale da chiarire se lui/lei vuole ricaricare la rotta o l'intera applicazione, sono abbastanza sicuro che vuole ricaricare la rotta. La tua soluzione reinizializza l'intera applicazione. – epitka

13

Nel caso in cui si sta tentando di forzare ricarica quando un utente fa clic su un link, l'attributo obiettivo fissato di collegamento. Si innescherà ricarica indipendentemente dal reloadOnSearch = false

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

Man! Hai reso la mia giornata! Questo è davvero un trucco, ma funziona magnificamente ed è sufficiente per alcune esigenze limitate. Grazie! –

+0

Il trucco per me è andato bene! Grazie. –

+1

Ciò ricaricherà l'intera applicazione non solo la rotta. Il modo non hacky è quello di usare ui-sref-opts = "{reload: true}" – BtnMike

Problemi correlati