我使用routeProvider來爲我的網址定義controlers和模板。angularjs - 刷新時點擊鏈接與實際的網址
當我點擊鏈接,它具有相同的URL是實際的位置上,沒有任何反應。如果用戶點擊這樣的鏈接,即使位置沒有改變,我也希望調用reload()
方法。換句話說,如果我將位置設置爲相同的值,我希望它的行爲與我將它設置爲不同的值相同。
是否有配置routeProvider或locationProvider自動做到這一點的方法嗎?或者什麼是正確的做法呢?這是往返應用程序中的stadard行爲,但如何在angularjs中執行此操作?
我問它google groups爲好。
UPDATE:
這個問題,獲得了大量的意見,所以我會盡量解釋我如何解決我的問題。
我創建了一個自定義的指令,在我的應用程序連接的勒南TOMAL費爾南德斯意見提出。
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>
什麼這個指令的作用是,它爲您根據di-href
屬性,這樣的角度可以處理它像往常一樣,你可以看到的網址,當鼠標懸停在鏈接設置href
屬性。此外,當用戶點擊它並且鏈接的路徑與當前路徑相同時,它將重新加載路由。
@ public0821的答案是比選擇的答案 – Nayish
好得多請注意上面,因爲它會導致內存泄露發佈的代碼示例。 '$ watch()'包含這個指令'element.bind('click',function(event){...});'這意味着它將爲觀察者的每次運行創建一個點擊事件處理程序,沒有發佈過去的點擊處理程序。 – Kayhadrin