AngularJS在没有Target的情况下改变ahref

时间:2015-03-21 09:28:27

标签: angularjs

在AngularJS中,我需要定义所有ahref的目标,并且只有在未定义目标时才将其设置为_self。这是通过AngularJS中的指令还是以其他方式完成的?

我目前有这个:

angular.element("a").prop("target", "_self");

但即使定义了目标,它也会改变一切。

2 个答案:

答案 0 :(得分:3)

您编写的代码将设置代码运行时存在的<a>代码的目标。如果您创建了一个指令,那么它将应用于稍后添加的任何<a>标记。

可以为<a>这样的常规html元素编写指令,因此您不必以任何额外的方式对其进行注释。您应该注意放置此类指令的位置,因为它可能会更改元素的标准行为,但它可以适用于您的情况。

myModule
.directive('a', function() {
    restrict : 'E',
    link : function(scope, el, attrs) {
        if( !attrs.target ) {
            el.prop('target', '_self');
        }
    }
})

答案 1 :(得分:1)

如果您不想编辑现有代码:

var elements = angular.element(document.getElementsByTagName("a"));

  angular.forEach(elements,function(element) {
          if(!angular.element(element).prop('target')) {
                 angular.element(element).prop('target',"_self")
           }
  });

最好使用指令

angular.module("app", [])
.directive("setTarget", function() {
    return {
        "restrict" : "EAC",
        "link" : function(scope, element, attrs) {
            if(!attrs.target) {
             attrs.$set("target", "_self");   
            }
        }
    }
});

在您的HTML中:

<a href="#" set-target>link</a>