1

我有一个 myNumber 指令,其中包含几个围绕输入的嵌套 ng-forms。输入的 ng-required 属性设置为 true 和某个 ng-pattern。问题是输入的状态(例如 ng-valid-required、ng-invalid-pattern)传播到指令内的 ng-forms。所以他们得到与输入本身相同的状态,这是想要的行为。但是,一旦在指令本身之外,指令周围的 ng-form 就不会获得内部 ng-forms 的状态。

<ng-form name="outerForm" id="outerForm">
    <my-number ...></my-number>
</ng-form>

虽然 input 和 ng-forms inside 指令具有类似 ng-valid-required ng-dirty ng-invalid ng-invalid-pattern 的状态,但 outerForm 是 ng-pristine ng-valid。

这是正常行为吗,AngularJS 是这样工作的,还是有解决方法来获取指令之外的状态?

4

1 回答 1

1

我通过以下方式使用控制器功能解决了这个问题:

      controller: function($scope) {
            $scope.$watch('innerForm.$valid', function() {
                if ($scope.innerForm.$valid) {
                    $scope.$parent.outerForm.$setValidity(null, true);
                } else {
                    $scope.$parent.outerForm.$setValidity(null, false);
                }
            });
        }
于 2014-08-14T17:12:15.590 回答