2015-09-07 53 views
5

我试图从一个角度(v1.2.28)指令具有角指令删除的href

删除HREF或NG-的href属性时,该网址没有在它的字符串插值它工作正常。

能否请你帮我想出解决办法?

我只是做了这里的jsfiddle http://jsfiddle.net/gfvewv5u/1/

angular.module('ui.directives', []); 
angular.module('ui', ['ui.directives']); 

angular.module('ui.directives', []).directive('uiTool', 
    function() { 
    return { 
    restrict: 'EAC', 
    require: '?ngModel', 
    link: function($scope, element, attrs, controller) { 
     var controllerOptions, options; 
     attrs.$set('href', null); 
     element.removeAttr('href'); 
     element.text('iamfoo for what'); 
    } 
    }; 
}); 

angular.module('myApp', ['ui.directives']) 
    .controller('testCtrl', function($scope){ 
    $scope.val = 1; 
    }); 

和HTML

<div ng-app="myApp"> 
    <div ng-controller="testCtrl"> 
     <a ui-tool href="/test/ts/{{val}}" >Link need to be removed</a> 
     <a ui-tool href="/test/ts" >Link remove</a> 
    </div> 
</div> 

根据我的例子中,第一个链接还是得到了HREF 而第二连杆好好尝试一下

+1

您已经定义的角模块angular.module( 'ui.directives',[]);.因此将其删除[]从angular.module( 'ui.directives',[])。指令( 'uiTool', – intekhab

回答

4

您需要销毁具有绑定值的元素上的作用域。 Angular会在内部跟踪这些绑定,并会重置href。

element.scope().$destroy(); 

像这样:

link: function($scope, element, attrs, controller) { 
    element.scope().$destroy(); 
    element.removeAttr('href'); 
    element.text('iamfoo for what'); 
} 

更新fiddle

+0

谢谢!确实很好 –

+0

如果我破坏范围结合将无法正常工作,amiright? –

+0

嗨@BrunoSantos它消除了绑定,如果这就是你的意思,但是这是问题 – Jorg