我希望能够从两个地方设置任何控件的disabled属性。在控件本身上,基于视图本身硬编码的规则。并且来自基于外部服务中定义的规则的指令。
当指令将disabled设置为true时,不应该通过控件上定义的内容覆盖它。但是,当指令将disabled设置为false时,应触发控件上定义的内容。
我希望这是有道理的。到目前为止,我有这个代码,但它不能按我想要的方式工作。
<input check-edit-matrix type="checkbox"
data-ng-model="model.isPrivate"
ng-disabled="model.isDeleted || model.isConfidential" />
(function () {
'use strict';
var directiveId = 'checkEditMatrix';
angular.module('common.directives')
.directive(directiveId, ['dataService', directiveFunc]);
function directiveFunc(dataService) {
return {
restrict: 'A',
scope: {
},
link: function (scope, element, attrs) {
attrs['disabled'] = 'disabled';
//if (attrs['disabled'] === 'disabled') {
// alert('already disabled !')
//}
}
};
}
})();
答案 0 :(得分:0)
将指令的价值与你所拥有的相结合将完成这项工作。让我们说该指令定义了一个属性:isDisabledByDirective,将您的代码更改为:
<input check-edit-matrix type="checkbox"
data-ng-model="model.isPrivate"
ng-disabled="model.isDeleted || model.isConfidential || isDisabledByDirective" />
它应该工作的原因是,如果它已被值禁用,则指令不能更改它(true || false)=== true。如果现有值不禁用它,则指令代码可能会更改它 - (false || true)=== true