如何使用Angular劫持链接上的点击并更改目的地?

时间:2014-04-16 18:43:18

标签: javascript angularjs

我想劫持链接上的点击,注入目标网址,然后我希望浏览器像往常一样关注到该目的地的链接(没有return false;和没有window.location.href或者window.open)。

2 个答案:

答案 0 :(得分:0)

要停止激活链接,您可以使用<A href="" ng-click="yourFunction()">link is here</a>来防止链接进入任何地方并将控制重定向到您的控制器和功能,在那里您可以随心所欲。 对于第二部分,您想继续浏览到其他页面而不更改页面?我不知道如何做到这一点,但你仍然可以触发get requests来获取数据,或者你可以使用Iframes,我认为没有任何其他方法没有重定向。

答案 1 :(得分:0)

在我看来,你想要javascript功能而不使用javascript,这对我来说真的没有任何意义。您能否提供一个不使用window对象或$window对象的充分理由?

如果你必须使用ngClick,那你几乎没有运气。但是,如果您只关心在点击应用程序中的链接时能够打开另一个窗口或标签,则应该查看ngHref

http://docs.angularjs.org/api/ng/directive/ngHref

它允许您在链接中动态定义href属性。所以你可以这样写:

<my-directive>
    <a ng-href="{{getMyLink()}}">Y U NO CLICK?</a>
</my-directive>

然后在myDirective指令中,您可以定义:

$scope.getMyLink = function() {
  var link = 'http://hostu.rl/'
  // additional logic
  return link;
};

这是我知道您可以保留默认浏览器功能的唯一方式,同时通过Angular Framework动态定义页面上的链接。