2015-10-07 84 views
1

我希望能够从两个地方设置任何控件的禁用属性。在控制本身上,基于视图本身硬编码的规则。并根据基于外部服务中定义的规则的指令。Angular指令设置禁用的属性

当指令设为禁用为true时,不应该被控件上定义的内容覆盖。但是,当指令设置为禁用为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

的OR-ing与你将做的工作是什么指令的值。比方说,指令定义一个属性:isDisabledByDirective,更改您的代码:

<input check-edit-matrix type="checkbox" 
    data-ng-model="model.isPrivate" 
    ng-disabled="model.isDeleted || model.isConfidential || isDisabledByDirective" /> 

它应该工作的原因是,如果它已经由值无效,该指令不能改变它(真||假) ===真。如果现有值不禁用它,则指令代码可能会更改它 - (false || true)=== true

相关问题