如何从指令链接函数内部添加带绑定表达式的属性

时间:2014-02-20 13:09:31

标签: javascript angularjs

如何将表达式添加到传递给指令element函数的link参数中?

例如,在指令中我想添加这个:
element.setAttribute('ng-disabled','{{disabled}}');

禁用是指令scope上的属性。

该指令没有模板,它只使用传入的element参数。

我想我应该使用指令范围来重新编译元素,但我不确定它是否也会重新编译指令。

我知道我可以$watch禁用并切换元素上的disabled属性,但我正在尝试了解是否可以添加dynmic属性。

感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用范围传递someValue。

在模板中:

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指令 - 所以不确定为什么要重新创建它。