2014-08-29 62 views
7

我已經檢查了文檔和ng-href not working線程已經在這裏,但我很難過。AngularJS ng-href不會去鏈接

ng-href是否需要完整路徑?我目前看起來像<a ng-title="{{title.text}}" ng-id="{{id.num}}" ng-href="/page.php#param:{{id.num}}"><span>go here</span></a>,但是當我點擊它時,它正確地更改瀏覽器地址欄中的URL(並且它是一個合法的URL;我可以在地址欄中點擊「enter」,它將「去那裏」 ),它實際上並沒有轉到那個頁面。

怎麼回事?我需要將此與某種ng-click結合嗎?如果是這樣,爲什麼?

更新:鏈接將從它被調用的同一頁面,但爲不同的數據記錄顯示使用不同的參數。我認爲,可能有一些用它做...

回答

1

這裏是我如何結束解決了這一個:

模板:

<a ng-title="{{title.text}}" ng-id="{{id.num}}" ng-click="go_to_item(id.num)"> 
    <span>{{title.text}}</span> 
</a> 

的Javascript:

$scope.go_to_item = function(display) { 
     window.location = '/page.php#id:' + display; 
     location.reload(); 
    }; 

這是工作,因爲它應該在我們的應用程序。爲什麼角具體$location$window不要工作對我來說是一個謎,但。我先試了一下,但他們沒有這樣做,所以如果有人能解釋爲什麼,我會給你「接受答案」這個問題! ;-)

+0

嗨@代碼壽司,你有沒有找到另一種方式來做到這一點?也許使用和AngularJS配置.. – 2015-04-17 16:42:41

+1

我上面發佈的代碼,從「這是我最終解決這個問題」開始,是我發現要做到這一點的方式。很難相信這只是7個月前 - 似乎是一生之前!我在當前的項目中沒有使用Angular,所以我不確定我今天是否會以不同的方式做它。隨意分享任何適合你的解決方案。快樂的編碼! – 2015-04-20 21:11:14

+0

我剛剛添加了一個解決方案,以另一種方式來做到這一點,我希望它對某人有所幫助:) – 2015-04-20 21:54:53

0

我想你的代碼,它的工作對我來說:

<script> 
$scope.title = {text: "test"}; 
$scope.id = {num: 123}; 
</script> 

<a ng-title="{{title.text}}" ng-id="{{id.num}}" ng-href="/page.php#param:{{id.num}}"><span>go here</span></a> 

變成這樣:

<a ng-title="test" ng-id="123" ng-href="/page.php#param:123" href="/page.php#param:123"><span>go here</span></a> 
+0

但也許是因爲您點擊它時實際上並未打開「/page.php」,因爲它不適合我。我與同事確認我將不得不使用ng-click代替。如果我在別人面前提出解決方案,我會在這裏發佈。儘管欣賞你的迴應! – 2014-08-29 19:18:05

8

要做到這一點最簡單的方法是添加目標=「_自我」,你的情況是這樣的解決方案:

<a ng-title="{{title.text}}" ng-id="{{id.num}}" 
ng-href="/page.php#param:{{id.num}}" target="_self"> 
<span>go here</span> 
</a> 

沒有NG單擊並沒有AngularJS功能是必需的。

+0

當我可以設置測試用例場景時,我將不得不嘗試一下。由於我改變了工作,所以我無法訪問最初引發這個問題的前一個項目。感謝您的建議。 – 2015-04-21 17:13:50

+0

這個答案提供了一些亮點:http://stackoverflow.com/a/28802951/284704。顯然,只要$ location服務正在以這種方式使用,Angular將始終將href作爲ngApp中的URL /位置重寫器對待。你必須用target =「_ self」來覆蓋才能獲得正常的鏈接行爲。 – 2017-04-11 21:52:38

-5

我以前有過這個問題。出於某種原因,我不允許ng-hrefng-controller之內。