Javascript 未调用角度指令编译/链接

Javascript 未调用角度指令编译/链接,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我正在尝试捕捉所有的锚点击并玩href。 所以我写了下面的指令 app.directive('a', function() { return { restrict: 'E', link: function(scope, elem, attrs) { if(attrs.ngClick || attrs.href === '' || attrs.href === '#'){

我正在尝试捕捉所有的锚点击并玩href。 所以我写了下面的指令

app.directive('a', function() {
        return {
            restrict: 'E',
            link: function(scope, elem, attrs) {
                if(attrs.ngClick || attrs.href === '' || attrs.href === '#'){
                    elem.on('click', function(e){
                        alert(attrs.href);
                        e.preventDefault();
                    });
                }
            }
        };
    })
我已经试着在app.js和MyCtrl.js文件中给出这个。 在myCtrl.js中,我的模块声明是这样的:

var AppControllers = angular.module('starter.controllers');
AppControllers
它正在另一个爱奥尼亚项目中工作。我不知道我会错在哪里。有人能帮我吗?

阅读评论后更新了答案

您可以覆盖
a
指令。但您必须确保覆盖默认行为,以防止angularjs覆盖的锚选项卡单击处理程序触发

app.directive('a', function() {
  return {
    restrict: 'E',
    scope: true,
    compile: function(element, attr) {
      element.bind('click', function(event) {
        alert('clicked on link: ' + attr.href)
        event.preventDefault(); // IMPORTANT
      });
    }
  }
});
另外,当尝试绑定到html时,您可能需要确保编译它,以确保锚定标记指令生效。有一个指令可以为您做到这一点:

app.directive('bindHtmlCompile', ['$compile', function($compile) {
  return {
    restrict: 'A',
    link: function(scope, element, attrs) {
      scope.$watch(function() {
        return scope.$eval(attrs.bindHtmlCompile);
      }, function(value) {
        element.html(value);
        $compile(element.contents())(scope);
      });
    }
  };
}]);
资料来源:

因此,您可以像这样使用
bind html compile
而不是
ng bind html

<span bind-html-compile="getHtml()"></span>


最后,这里有一个plunker可以做到这一点:

基本上,我想捕获所有锚标记,而不管我的htmlAngular JS是否为
实现了一个指令,我不确定是否与此有关。您的控制台有错误吗?控制台没有错误。但是一个plnkr只是为了显示我的需要:我已经做了一个砰砰的一声。有人能帮我吗?我想检测我的锚点ClicksRect,但我有几个控制器。所以我把控制器放在不同的文件中,所以我不会传递依赖项,也不会尝试使用同一个对象。我已将该指令放置在我的第一个控制器文件中。即使这样也无济于事。知道我的指令应该放在哪里吗?那就很难弄清楚到底发生了什么。来个快速的猛击怎么样?我正试图用jQlite做同样的事情。通过检测我的类miniorPara嵌套中的锚点单击。正在尝试使用queryselector。这样行吗?有什么想法吗?甚至创建了一个指令模块(在plnkr中更新)。还是不走运。不知道怎么做。我想做的是,我将收到一个我无法控制的html。当一个链接被点击时,根据我需要打开或下载的url类型。所以我尝试以上的方法。任何帮助都会被感激的哦,plunker的angular loaded版本错误(应该是1,而不是2),没有添加ionic或ui路由器。您已经创建了一个名为“starter.modules”的模块,但尚未在html中使用
ng app=“'starter.modules'”
来加载模块。尝试这样做,看看这是否至少解决了plunker中的问题