我使用 RouteProvider 为我的 url 定义控制器和模板。
当我单击与实际位置具有相同 URL 的链接时,没有任何反应。我想要reload()
如果用户单击此类链接,即使位置未更改,也会调用该方法。换句话说,如果我将位置设置为相同的值,我希望它的行为与我将其设置为不同的值相同。
有没有办法配置routeProvider或locationProvider来自动执行此操作?或者说正确的方法是什么?这是往返应用程序中的标准行为,但如何在 AngularJS 中做到这一点?
我已经问过了谷歌群组 https://groups.google.com/forum/#!topic/angular/VcaYuIuGhCM以及。
UPDATE:
这个问题得到了很多人的关注,所以我将尝试解释我是如何解决我的问题的。
正如 Renan Tomal Fernandes 在评论中建议的那样,我创建了一个用于在我的应用程序中链接的自定义指令。
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。此外,当用户单击它并且链接的路径与当前路径相同时,它会重新加载路线。