绑定点击事件以在新标签中打开链接

时间:2016-08-26 14:28:04

标签: angularjs dom coffeescript

我正在尝试在新选项卡中打开模态中的所有链接,并且由于使用角度的限制,操纵DOM并不像我想象的那么容易。有没有办法将click事件绑定到链接,然后使该click事件打开一个新选项卡?

我有类似的东西

w = angular.element($window)
w.bind 'click', (e) ->
  # if link clicked open link in new tab?    

2 个答案:

答案 0 :(得分:1)

你不能只在每个链接上使用ng-click吗?

<a href="#" ng-click="openLink('http://www.google.com')">Open link in new window</a>

在你的控制器中有这样的东西:

$scope.openLink = (link) ->
  window.open link
  return

或仅使用html:

<a href="http://www.google.com" target="_blank">Open link in new window</a>

答案 1 :(得分:0)

基本规则是如果你要对DOM做任何事情,那么你应该有一个指令并在链接函数中使用普通的JQuery

new-tab.directive.coffee

angular.module 'my.module'
  .directive 'newTab', ($window) ->
    restrict: 'A'
    link: (scope, element, attributes) ->
      element.on('click', (evt)->
        # Open link in new tab here
      )

示例用法:

<a href='/your/link' new-tab>

您可能还需要做一些“防止默认”的事情,以便链接仍然不会转到当前窗口中的同一页面(现在我想到了它)。

您也可以尝试在任何节点和所有节点上设置_target ='blank'属性。

  

我没有测试过这个

new-tab-a.directive.coffee

angular.module 'my.module'
  .directive 'a', -> #I doubt this is a good idea though using 'a' as a directive name.
    restrict: 'E'
    link: (scope, element, attributes) ->
      attributes.target = '_blank'