AngularJS删除包含表达式的属性不起作用

时间:2015-01-12 06:15:39

标签: angularjs angularjs-directive

使用我读取的属性的指令,应用一些逻辑(对于此示例控制台日志),然后从HTML中删除该属性(有效的HTML,清洁度和可访问性)。当属性值是字符串时,这种方法有效,但如果值是表达式,则不会删除属性。

伪代码:

的index.htm

Working: <my-directive foo="123"></my-directive>
Not working: <my-directive foo="{{myExpressionValue}}"></my-directive>

directive.js

app.directive("myDirective", function(){
  return {
    template:"<div>Hello World</div>",

    compile: function(element, attributes){
      // Do whatever with attribute
      console.log(attributes.foo);
      // Now remove the attribute
      element.removeAttr('foo');
    }
  };
});

输出

Working: <div>Hello World</div>
Not working: <div foo="123">Hello World<div>

=============================================== ===========

我希望这两条指令能够删除“foo”&#39;属性。发布链接不起作用。假设表达式在指令后面的某处进行了评估......?

谢谢!

1 个答案:

答案 0 :(得分:0)

试试这个指令

app.directive('myDirective', function() {
  return {
    template: "<div>Hello World</div>",
    compile: function(tElement, tAttr) {
      tAttr.$set('foo', null);
    }
  }
})

work plnkr:http://plnkr.co/edit/aq7ZYo8izcjDDLPUsLjZ?p=preview

Now both div do not contain the Foo attr