如何将表达式添加到传递给指令element
函数的link
参数中?
例如,在指令中我想添加这个:
element.setAttribute('ng-disabled','{{disabled}}');
禁用是指令scope
上的属性。
该指令没有模板,它只使用传入的element
参数。
我想我应该使用指令范围来重新编译元素,但我不确定它是否也会重新编译指令。
我知道我可以$watch
禁用并切换元素上的disabled属性,但我正在尝试了解是否可以添加dynmic属性。
感谢。
答案 0 :(得分:1)
在模板中:
parameter="someValueCanPassTo"
指令:
scope: {
parameter: '='
},
link: function(scope, element, attrs) {
$watch('parameter', function() {
element.attr('my-attr', scope.parameter);
});
}
答案 1 :(得分:0)
您可以使用element.attr('attrName', 'attrVal')
添加属性。如果您希望自动更新该属性,则应使用:
$scope.$watch(attrs.attrName, function(val){
element.attr('disabled', val);
});
是的,重新编译元素将导致重新编译指令(导致无限循环)。
此外,还有一个ng-disabled指令 - 所以不确定为什么要重新创建它。