【问题标题】:Watch all anchors on a page using angular使用角度观看页面上的所有锚点
【发布时间】:2016-08-03 19:29:35
【问题描述】:

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

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

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

但这也行不通。

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

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

【问题讨论】:

    标签: javascript jquery angularjs watch


    【解决方案1】:

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

    【讨论】:

    • angular 已经用 htmlAnchorDirective 做到了,不会冲突吗?
    • 哦,天哪,当然。我已经在输入了。失败在我这边。我将只添加指令,以便在项目需要时添加文件。我现在就去试试。
    • @Luca 它不会发生冲突....如果有多个具有相同名称的指令.. angular 确实会运行它们。那就是他们改进了基本的htmlinput元素
    猜你喜欢
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 2023-03-20
    • 2014-05-24
    • 1970-01-01
    相关资源
    最近更新 更多