2016-08-03 48 views
1

我有要求观看我的页面上的所有锚点。如果客户点击我需要识别此链接的任何链接,请查看它是否会打开新标签页(target="_blank")或执行其他操作。使用角度观看页面上的所有锚点

在Angular中处理这个问题的最佳解决方案是什么?在jQuery中这相当简单,但我不知道如何在Angularjs中处理它。我试图在不同的级别使用scope.$on('$locationChangeStart', ...),但它永远不会被触发。我现在试图使它工作使用

scope.$watch(function() { 
    return angular.element('a'); 
}, function (value) {}); 

但这也行不通。

有没有什么办法可以达到和我一样的行为效果?$('a').live('click', ...)

还要注意,它需要是通用的,所以最好它应该在一个指令中添加一次,它的高度足以监视所有元素(同样可能在jQuery中)。是的,这是一个艰难的要求,没有可能的讨论。

回答

2

您应该创建一个名为a的新指令。这样的角度会执行它的所有锚

angular.module('link', []) 
 
    .directive('a', function() { 
 
     return { 
 
     restrict: 'E' 
 
     link: function(scope, element, attrs) { 
 
      element.on('click', function() { 
 
      if (attrs.target) 
 
      //your logic 
 
      }) 
 
     } 
 
     } 
 
    }

+0

角也已经与htmlAnchorDirective,是不是冲突? – Luca

+0

哦,eM吉,当然。我已经用输入来做这件事了。失败在我身边。我只需添加指令,以便在项目需要时添加该文件。我现在要试一试。 –

+1

@Luca它不会冲突....如果有多个指令具有相同的名称..角没有运行它们。多数民众赞成他们已经改善了基本的HTML输入元素 – harishr