我正在制作一些带有角度的表单指令以便重用,并且我希望将我的指令上的所有属性传递给我模板中的输入标记。
所以,如果他们写道:
<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的指令是很常见的,在这种情况下,你想要将所有属性传递给焦点元素。
答案 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
};
}
}
});