在AngularJS中,我需要定义所有ahref的目标,并且只有在未定义目标时才将其设置为_self。这是通过AngularJS中的指令还是以其他方式完成的?
我目前有这个:
angular.element("a").prop("target", "_self");
但即使定义了目标,它也会改变一切。
答案 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>