2015-10-07 5 views
1

Я хочу иметь возможность установить отключенный атрибут любых элементов управления из двух мест. О самом управлении, основанном на правилах, жестко закодированных в самом представлении. И из директивы, основанной на правилах, определенных во внешней службе.Угловая директива для установки отключенного атрибута

Когда директива устанавливает запрет на значение 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

ИЛИ-значение Директивы с тем, что вы будете делать эту работу. Скажем, директива определяет свойство: isDisabledByDirective, изменить код:

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

Причина она должна работать в том, что, если она уже отключена значениями, директива не может изменить его (правда || ложь) === true. Если существующие значения не отключают его, код директивы может его изменить - (false || true) === true

Смежные вопросы