2014-07-03 90 views
7

我在我使用AngularJS的兩個項目中注意到了這一點,所以我認爲這是AngularJS的一個問題。如果點擊的鏈接與當前頁面具有相同的URL,AngularJS將不刷新頁面

比方說,我在菜單上有一個按鈕「註冊」,並帶我到/帳戶/註冊頁面。但是,如果我在/帳戶/註冊頁面上,單擊該按鈕不會刷新頁面。這就像按鈕被禁用。當我想要點擊的鏈接與我目前所在的網頁具有相同的網址時,這總是會發生。網址很簡單<a href="something1/something2">Link</a>。我怎樣才能消除這種行爲?

+0

要刷新頁面嗎? –

+0

我只是希望鏈接是可點擊的,即使這意味着它將我帶入與當前頁面相同的頁面。 – Andrej

回答

1

您可以檢查當前的url/state/hash是否爲「/ account/register」...如果是,則使用$ route服務的reload方法。

AngularJs: Reload page

+0

我說的註冊鏈接不在任何Angular Controller中,它只是菜單中的一個鏈接。但是,它在ng-app下。如果鏈接在某個角度控制器下,也會發生這種情況。 – Andrej

+0

然後,您可能需要收聽$ route服務的'locationchangestart'事件。你能粘貼一個樣本片段嗎? – Saurav

+1

我沒有使用$ routeProvider和$ locationProvider,它不是一個單獨的頁面應用程序。 – Andrej

0

我沒有找到任何合理的方法來檢查內部視圖的路徑,但是這可能是工作:
觀點:

<a link-href="path/to/same/location">same location</a> 

指令:

app.directive('linkHref', ['$location', '$route', function ($location, $route) { 
    return { 
    restrict: 'A', 
    link: function ($scope, $element, $attrs) { 
     $element.bind('click', function() { 
     if ($location.$$url == $attrs.activeLink) { 
      $route.reload(); 
     } else { 
      $location.path($attrs.activeLink); 
     }); 
    } 
    }; 
}]); 
0

我有同樣的問題,並發現,如果我刪除了$位置(不是反正在使用)列入一個工廠的問題就消失了。

6

與角度相同的問題,將target="_parent"屬性添加到鏈接使其工作。

+2

通過AngularJS v1.4.7驗證。這解決了我在導航欄中遇到的同樣的確切問題,它通過'ng-include'包含在我的所有頁面中。 – DondeEstaMiCulo

+1

也適用於我 – jkb016

0
<a target="_self" href="/xxxxxxx"></a> 

會解決這個問題

1

對於誰不明白,我已經記錄我的屏幕來顯示這個問題。 基本上,Angular有一些錯誤。

Zone not loaded

  1. 如果我們將導航的NG-應用程序之外。
  2. 該應用程序已經加載。
  3. 然後我們再次點擊此導航。
  4. 該應用將無緣無故消失。

我通過將target="_parent"target="_self"屬性添加到錨定標記來修復它,如上面回答的那樣。

查看更多關於Angular docs