如何使用angular中的指令动态地将表单元素设置为只读?

时间:2017-06-21 07:29:09

标签: javascript jquery angularjs angularjs-directive

我想提供某些元素,例如" select,input,textarea,button" readonly当指令的给定属性具有某个名称时。

  

此问题中的所有代码都缩小了以使其更清晰。

例如,有一个指令' 动态输入字段'关于这个元素:

<ui-select ng-model="controllerData.header.subsidiary"
         theme="bootstrap"
         class="googleSearch"
         ng-disabled="quotationData.readOnly || isFieldDisabled('subsidiary')" 
         on-select="subsidiaryChanged(controllerData.header.subsidiary)"
         dynamic-input-field="A">
    <ui-select-match allow-clear="true" autofocus="true" placeholder="Subsidiary">{{$select.selected.description}}</ui-select-match>
    <ui-select-choices repeat="subsidiary in presetData.subsidiariesChange | filter: {'description': $select.search}">
        <div ng-bind-html="subsidiary.description | highlight: $select.search"></div>
    </ui-select-choices>
</ui-select>

使用此指令,我想在具有特定名称的情况下禁用此ui-select元素(在这种情况下,它是&#34; A&#34;

我尝试过很多可能性,但我找不到合适的方法来做到这一点。这是我的指令

'use strict';

/**
 * @ngInject
 */
module.exports = function() {
    return {
        restrict: 'A',
        compile: function (element, attrs) {
            if (attrs.dynamicInputField === "A" ) {
                // I have tried all these options but it doesn't seem to disable the select element
                // element.prop('disabled', 'disabled');
                // element.attr("ng-disabled", 'isReadOnly');
                // element.attr("ng-disabled", 'true');
                // element.attr("ng-disabled", true);
                // element.attr("ng-disabled", 'disabled');
                // element.prop('readonly', true);
            }
        }
    };
};

1 个答案:

答案 0 :(得分:0)

我担心选择器无法正常处理“只读”。我建议你使用“禁用”,但在这种情况下,你似乎已经有了使用它的指令指令。