禁用指令属性的角度修剪

时间:2015-04-17 07:38:30

标签: angularjs angularjs-directive

目前正在编写一个指令,需要将空格作为字符传递给它。 像:

<my-directive exclude-chars=" abc"/>

原来,角度消除了前导空间;但我希望它保留下来。 这样做的任何方式?

编辑:我将指令参数作为字符串传递(使用@,而不是作为变量,使用=)

2 个答案:

答案 0 :(得分:8)

我会做一个:

  1. {{''}}中包装该属性:

    <my-directive exclude-chars="{{' abc'}}"></my-directive>
    

    并使用指令链接函数中的 abc访问字符串attrs.excludeChars,包括空格

    link: function(scope, element, attrs) {
      var excludeChars = attrs.excludeChars;
    } 
    
  2. ''中包装该属性:

    <my-directive exclude-chars="' abc'"></my-directive>
    

    然后将值传递给$eval以获取包含空格的字符串:

    link: function(scope, element, attrs) {
      var excludeChars = scope.$eval(attrs.excludeChars);
    }
    
  3. 注意:通过jQuery / jQlite attr函数直接访问该属性对Angular来说是非常不友好的,它通过normalization支持不同格式的指令/属性,并强制用户使用指令使用您通过attr访问的那个。


    BTW:自定义HTML元素应在模板中明确显示结束标记。如果你不这样做,我发现浏览器经常使用的DOM不是预期的

答案 1 :(得分:1)

最简单的解决方案之一是使用jqlite attr函数,如下面的代码。

在你的指令代码中。

link: function(scope, element, attrs){
    console.log('>'+element.attr("exclude-chars"));
}

Demo jsfiddle is here.