2014-06-27 46 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 –