使用 angular 观看页面上的所有锚点

Watch all anchors on a page using angular

我有观看我页面上所有主播的要求。如果客户单击任何 link,我需要识别此 link,看看它是否会打开一个新选项卡 (target="_blank") 或执行其他操作。

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

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

但这也行不通。

有什么方法可以让我在 jquery 和 $('a').live('click', ...) 中得到相同的行为?

另请注意,它需要是通用的,因此最好将它放在一个指令中,该指令在足够高的级别添加一次,以便它监视所有元素(同样,在 jQuery 中也是可能的)。是的,这是一个硬性要求,无法讨论。

您应该创建一个名为 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
          })
        }
      }
    }