我有一个包含文本输入的指令。当模板放在一起时,输入具有由ngRequired和ngDisabled添加的类。在postlink时间,我还有其他要添加到输入中的类,但我不知道最好的方法是什么。
我使用了一种方法,但它覆盖了angularjs的类。
template: '<input class="{{classes}}" ng-required="true"></input>'
还有第二种方法只使用element.addClass添加类,但这并没有数据绑定。
link: function(scope, element) { element.addClass(getGeneratedClasses()) }
Ng-class在这里没有帮助,因为我想让一个控制器使用该指令来控制类。
是否有一种很好的方法从链接函数中绑定数据类?
答案 0 :(得分:0)
使用第二种方法,您可以在(后)链接功能中设置$ watch:
link: function(scope, element) {
scope.$watch(function() {
return {
hasRequiredClass: element.hasClass('required'),
hadDisabledClass: element.hasClass('disabled')
};
}, function(newVal, oldVal) {
if (newVal.hasRequiredClass) {
//add additional classes
}
if (newVal.hasDisabledClass) {
// add additional classes
}
});
});