2013-10-02 7 views
14

W konfiguracji trasy mojej aplikacji AngularJS większość tras jest określona z opcją reloadOnSearch ustawioną na false, ponieważ większość czasu strona nie powinna być ponownie ładowana, gdy parametr wyszukiwania zmienione.Wymuś AngularJS, aby przeładować trasę, chociaż opcja reloadOnSearch jest ustawiona na false

Jednak w rzadkich przypadkach potrzebuję innego zachowania, w którym muszę ponownie załadować adres URL, mimo że zmieniły się tylko parametry wyszukiwania.

Czy istnieje sposób zmuszenia AngularJS do ponownego załadowania adresu URL, mimo że reloadOnSearch ma wartość false?

Odpowiedz

15

Nie próbowałem tego, ale można spróbować czegoś.

W przypadku obsługi zdarzeń należy wywołać metodę $route.reload(), jeśli znany jest warunek, który powinien spowodować odświeżenie trasy.

+0

Co masz na myśli z obsługi zdarzeń $ routeUpdate, w jaki sposób można skonfigurować jego zachowanie, czy jest to część rdzenia angularjs? Nie chcę zmieniać samej struktury, aby móc później zaktualizować wersję. – Flo

+0

Ah ok, teraz mam to, co miałeś na myśli. Powinienem wysłuchać zdarzenia $ routeUpdate, a następnie w razie potrzeby ponownie je załadować. – Flo

+1

Zasadniczo możesz zrobić $ route.reload() kiedy chcesz. Kiedy to zrobić, to upto you. Ponieważ chcesz odświeżyć widok w przypadku, gdy zapytanie zmienia się, prawda. Jak wiesz, że zapytanie zostało zmienione. To wydarzenie jest wywoływane, gdy zapytanie wyszukiwania jest aktualizowane. – Chandermani

2

to również pracować

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

html

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

Pytanie nie zostało sformułowane w taki sposób, aby wyjaśnić, czy chce przeładować trasę lub całą aplikację, jestem prawie pewien, że chce przeładować trasę. Twoje rozwiązanie ponownie inicjuje całą aplikację. – epitka

13

W przypadku, gdy próbują wymusić przeładowanie, gdy użytkownik kliknie link, atrybut docelowy zbiór połączeń za. Będzie to powodować przeładowanie niezależnie od reloadOnSearch = false

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

Mężczyzna! Zrobiłeś mój dzień! To rzeczywiście jest hack, ale działa pięknie i jest wystarczające dla niektórych ograniczonych potrzeb. Dzięki! –

+0

Zrobiłem dla mnie dobrze! Dzięki. –

+1

Spowoduje to ponowne załadowanie całej aplikacji, a nie tylko trasy. Niehackowy sposób polega na użyciu ui-sref-opts = "{reload: true}" – BtnMike

Powiązane problemy