最近,我必须使Input元素同时与ng-disabled和自定义指令一起使用,它们使用隔离范围来评估表达式,就像ng-disabled正在做什么,以某种方式,自定义指令可以正常工作,但是ng-disabled不能,因为它只评估隔离范围内的表达式。

custom指令非常简单,例如:

angular
  .module('directives', [])
  .directive('conditionalAutofocus', function () {
    return {
        restrict:'A',
        scope:{
            condition:'&conditionalAutofocus'
        },
        link:function (scope, element, attrs) {
            if (scope.condition()) {
                attrs.$set('autofocus','true');
            }
        }
    }
});


该页面如下所示:

<input name="pin"
       ng-model="pin"
       type="password"
       required
       ng-disabled="names == null"
       conditional-autofocus="names != null" />


有人已经有解决此问题的方法了吗?

提前致谢!
亚尼

最佳答案

我遇到了同样的问题,最简单的解决方案是恕我直言。是使用隔离范围继承ngDisabled的属性。

angular.module('directives', [])
.directive('conditionalAutofocus', function () {
    return {
        restrict:'A',
        scope:{
            condition:'&conditionalAutofocus',
            disabled:'=ngDisabled'
        },
        link:function (scope, element, attrs) {
            if (scope.condition()) {
                attrs.$set('autofocus','true');
            }
            if(scope.disabled){
                //is disabled
            }
        }
    }
});


可能仅适用于限制:“ E”。尚未测试其他人

关于scope - 如何让禁用ng的指令在隔离范围内工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14019752/

10-10 21:59
查看更多