2015-10-07 121 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

相關問題