将所有任意属性从html定义传递到模板元素

时间:2014-05-30 04:34:30

标签: angularjs

我正在制作一些带有角度的表单指令以便重用,并且我希望将我的指令上的所有属性传递给我模板中的输入标记。

所以,如果他们写道:

<jays-input required class="well"></jays-input>

即使我的指令没有正式采用所需的属性或类,它也会将它们转移到&#34;输入&#34;我模板的一部分。所以我的模板会是这样的:

<input placeholder="jays input" {{$all_attributes}} />

...其中$ all_attributes将是&#39;必需的class =&#34; well&#34;&#39;。更好的只是与指令所期望的不匹配的属性。

写这篇文章的时候,我意识到我可以解析我自己的$ attrs数组,但我想知道是否有简写或其他东西。我觉得制作一个仅仅围绕特定元素包装html的指令是很常见的,在这种情况下,你想要将所有属性传递给焦点元素。

1 个答案:

答案 0 :(得分:1)

在你的指令定义的编译函数中,使用jQuery添加属性:

app.directive('jaysInput', function() {
     return  {
        restrict: 'E',
        compile: function(element, attr) {
            $('input', element).each(function(){
               for (var i in attr) 
               {
                   $(this).attr(i, attr[i]);
               }
           }
           return function(scope, element, attr) {
               // return link function
           };
        }
     }
});