使用角度观察页面上的所有锚点

时间:2016-08-03 10:41:33

标签: javascript jquery angularjs watch

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

在Angular中处理此问题的最佳解决方案是什么?在jQuery中这很容易,但我不知道如何在Angularjs中处理它。我尝试在不同级别使用scope.$on('$locationChangeStart', ...),但它永远不会被触发。我现在正试图使用​​

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

但这也行不通。

有没有办法让我在$('a').live('click', ...)的jquery中获得相同的行为?

还要注意它必须是通用的,所以最好它应该在一个指令中,它在一个足够高的级别添加一次,以便它监视所有元素(再次,就像在jQuery中一样)。是的,这是一项艰难的要求,不可能进行讨论。

1 个答案:

答案 0 :(得分:2)

您应该创建一个名为a的新指令。这样,angular将为所有锚点执行它

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