Я использую 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-адрес при наведении курсора на ссылку. Кроме того, когда пользователь нажимает на него, и путь ссылки совпадает с текущим путем, он перезагружает маршрут.