Я использую routeProvider для определения контроллеров и шаблонов для моих URL-адресов.
Когда я нажимаю на ссылку, которая имеет тот же URL-адрес, что и фактическое местоположение, ничего не происходит. Мне бы хотелось, чтобы метод reload()
вызывался, если пользователь нажимает на такую ссылку, даже если местоположение не изменилось. Другими словами, если я установил местоположение в одно и то же значение, я бы хотел, чтобы он вел себя так же, как если бы я установил его в другое значение.
Есть ли способ настроить routeProvider или locationProvider, чтобы сделать это автоматически? Или что такое правильный подход? Это поведение stadard в приложениях с круговым движением, но как это сделать в angularjs?
Я также спросил его группы google.
UPDATE:
Этот вопрос получает много просмотров, поэтому я попытаюсь объяснить, как я решил свою проблему.
Я создал настраиваемую директиву для ссылки в моем приложении, как предложил Ренан Томаль Фернандес в комментариях.
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-адрес, когда вы наводите курсор на ссылку. Кроме того, когда пользователь нажимает на него, и путь ссылки совпадает с текущим путем, он перезагружает маршрут.