Używam routeProvider do definiowania kontrolerów i szablonów dla moich adresów URL.angularjs - odświeżenie po kliknięciu linku z rzeczywistym URL-em
Po kliknięciu linku, który ma ten sam URL, co rzeczywiste położenie, nic się nie dzieje. Chciałbym wywołać metodę reload()
, jeśli użytkownik kliknie na taki link, nawet jeśli lokalizacja się nie zmieniła. Innymi słowy, jeśli ustawię lokalizację na tę samą wartość, chciałbym, aby zachowywała się tak samo, jak gdybym ustawiła ją na inną wartość.
Czy istnieje sposób, aby skonfigurować routeProvider lub locationProvider, aby zrobić to automatycznie? Lub jakie jest właściwe podejście, aby to zrobić? To jest zachowanie stadarda w aplikacjach w obie strony, ale jak to zrobić w angularjs?
Poprosiłem również o to na google groups.
UPDATE:
To pytanie jest coraz wiele poglądów, więc postaram się wyjaśnić, w jaki sposób rozwiązać mój problem.
Utworzyłem niestandardową dyrektywę dotyczącą łączenia w mojej aplikacji, tak jak sugerował to Renan Tomal Fernandes w komentarzach.
angular.module('core.directives').directive('diHref', ['$location', '$route',
function($location, $route) {
return function(scope, element, attrs) {
scope.$watch('diHref', function() {
if(attrs.diHref) {
element.attr('href', attrs.diHref);
element.bind('click', function(event) {
scope.$apply(function(){
if($location.path() == attrs.diHref) $route.reload();
});
});
}
});
}
}]);
Dyrektywa jest następnie używana dla wszystkich linków w mojej aplikacji Chcę mieć tę funkcjonalność.
<a di-href="/home/">Home</a>
Co ta dyrektywa nie jest to, że ustawia atrybut href
dla Ciebie na podstawie di-href
atrybutu tak kątowej może obsłużyć go jak zawsze i można zobaczyć link po najechaniu na odnośnik. Ponadto, gdy użytkownik kliknie, a ścieżka łącza będzie taka sama, jak bieżąca ścieżka, przeładuje trasę.
@ public0821 Odpowiedź jest znacznie lepsza niż wybrana odpowiedź – Nayish
Należy uważać na przykładowy kod zamieszczony powyżej, ponieważ powoduje to wycieki pamięci. '$ watch()' zawiera tę instrukcję 'element.bind (" kliknięcie ", funkcja (zdarzenie) {...});" co oznacza, że utworzy funkcję obsługi zdarzeń kliknięcia dla każdego przebiegu obserwatora, nigdy nie zwalniając poprzedniej obsługi kliknięcia. – Kayhadrin