2014-06-27 44 views
4

我想要做的就是在鏈接到外部網站的部分的html中包含錨定標記。是這一標準的HTML,代碼將僅僅是:從angularJS部分鏈接到具有不同域的外部URL部分

<a href="http://www.google.com" target="_blank">google</a> 

這麼簡單,因爲這是,我似乎無法找到如何讓過去的角度攔截路線(或者替換我的錨與https://docs.angularjs.org/api/ng/directive/a指令無意中工作解決方案?)。

我搜遍了SO和網絡的其他部分,看到了無數解決方案:處於同一域中的鏈接,SPA內的路由,頁面內的路由(ala $ anchorScroll),但這些都不是我的正確發佈。

我懷疑它可能與使用$ sce有關,但我是一個Angular n00b,並不確定如何正確使用該服務。我想在我的視圖控制器如下:

$scope.trustUrl = function(url) { 
    return $sce.trustAsResourceUrl(url); 
} 

與相應:

<a ng-href="{{ trustUrl(item) }}">Click me!</a> 

(如下所述:Binding external URL in angularjs template

,但似乎並沒有這樣的伎倆(我結束只用href =「{{」在渲染頁面中)。

使用這樣一個普通的錨鏈接:

<a href="http://www.google.com">google</a> 

也沒有這樣的伎倆(即使一些網上告知,標準HREF會引起角一個完整的頁面重載:AngularJS - How can I do a redirect with a full page load?)。

我也試過將目標= _self」的屬性,但是,似乎沒有任何效果無論是。

我是否需要寫一個自定義的指令,因爲這裏所描述?

Conditionally add target="_blank" to links with Angular JS

這一切對於這樣一個簡單的動作似乎太複雜了,我覺得我在我的n00bishness中缺少一些明顯的東西,至少我希望如此,因爲這個過程只是爲了鏈接到另一個url而感到非常繁重。

預先感謝您提供任何解決方案,建議,參考或方向。

+0

你的第一個片段(香草html錨點)對我來說工作得很好。 –

+0

謝謝你爲我驗證凱文。我在其他地方發生了一些事情,那就是攔截或阻止我的鏈接工作。奇怪的是,我可以右鍵單擊鏈接並在新選項卡中打開它沒有問題,但是當我左鍵單擊時,我什麼也得不到。就我應該看到的內容而言,這裏是否有任何常見的嫌疑人?我在視圖上執行了一些自定義代碼來執行視差效果,但它僅限於攔截滾動到視圖中下一張幻燈片的特定按鈕上的代碼。點擊錨點不會與該代碼進行交互。否則,這是一個非常香草的設置。 – taoteg

+0

凱文,我想接受你的評論作爲我的答案,因爲它確實是除了錨點之外的東西,你爲我驗證了香草代碼的作品。出於某種原因,我似乎無法弄清楚如何在這裏做到這一點。哇 - 腦子壞的一天。 – taoteg

回答

6

事實證明,我確實已將頁面中的所有錨鏈接綁定到事件偵聽器並被覆蓋。由於該代碼是頁面工作方式的基礎,所以我不想惹它。相反,我用它繞過NG-點擊調用新的網址如下:

HTML:

<a class="navLinkHcp" href="{{hcpurl}}" title="Habitat Conservation Plan" target="_blank" ng-click="linkModelFunc(hcpurl)">Habitat Conservation Plan</a> 

控制器:

$scope.hcpurl = 'http://eahcp.org/index.php/about_eahcp/covered_species'; 

$scope.linkModelFunc = function (url){ 
    console.log('link model function'); 
    $window.open(url); 
} 

瞧!很好去。 再次感謝KevinB對我的提示,因爲這可能是問題所在。

+0

你是怎麼知道你有一個綁定事件監聽器的?我有同樣的問題,無法找到源。 –

+0

monitorEvents($ 0)在DevTool /控制檯通過此鏈接:http://stackoverflow.com/questions/10213703/how-do-i-view-events-fired-on-an-element-in-chrome-devtools –