angularjs - обновить при нажатии на ссылку с реальным URL
Я использую routeProvider для определения контроллеров и шаблонов для моих URL.
Когда я нажимаю на ссылку, которая имеет тот же URL, что и фактическое местоположение, ничего не происходит. Я хотел быreload()
метод, который вызывается, если пользователь нажимает на такую ссылку, даже если местоположение не изменилось. Другими словами, если я установлю местоположение на то же значение, я бы хотел, чтобы оно велось так же, как если бы я установил его на другое значение.
Есть ли способ настроить routeProvider или locationProvider, чтобы сделать это автоматически? Или какой правильный подход сделать это? Это стандартное поведение в приложениях туда и обратно, но как это сделать в angularjs?
Я спросил об этом нагруппы Google также.
ОБНОВИТЬ:
Этот вопрос получает много просмотров, поэтому я постараюсь объяснить, как я решил свою проблему.
Я создал пользовательскую директиву для ссылок в своем приложении, как предложил Ренан Томаль Фернандес в комментариях.
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();
});
});
}
});
}
}]);
Директива затем используется для всех ссылок в моем приложении, я хочу иметь эту функцию.
<a di-href="/home/">Home</a>
Эта директива делает то, что она устанавливаетhref
атрибут для вас на основеdi-href
атрибут angular может обрабатывать его как всегда, и вы можете видеть URL при наведении курсора на ссылку. Кроме того, когда пользователь нажимает на него и путь ссылки совпадает с текущим, он перезагружает маршрут.