使用angular指令删除href

时间:2015-09-07 04:38:00

标签: javascript angularjs

我正在尝试从角度(v1.2.28)指令中删除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 个答案:

答案 0 :(得分:4)

您需要销毁具有绑定值的元素的范围。 Angular在内部跟踪这些绑定,并将重置href。

element.scope().$destroy();
像这样:

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

更新fiddle