我正在使用angular-auto-validate,并且遇到了一些状态管理问题。我有一个多部分表单,其中需要一些字段(名称/电子邮件地址),用户可以“返回”更改答案。基本上,对于表现良好的每个阶段我都有一个部分,但有一个例外。如果字段无效,则禁用“继续”按钮。我尝试使用$ valid标识符,但是当部分加载时,每个字段都以ng-valid
开头,所以我可以使用$ touching或$ pristine。问题是,当用户返回时,绑定到数据源的值有效,但未触摸该字段,因此不会激活继续按钮。示例代码(这是在我点击“后退”按钮后生成的代码):
<input type="text" name="name" ng-minlength="3" ng-model="myModel" placeholder="Your First Name" ng-focus="inputFocused()" ng-pattern-err-type="" ng-model-options="{updateOn: 'blur'}" class="ng-valid ng-valid-pattern ng-valid-minlength">
和按钮:
<a href="/#/setup" class="button round" ng-class="{'disabled': !signupForm.name.$valid || !signupForm.name.$touched }" ng-click="completeStep()">Continue</a>
如何禁用默认ng-valid
或识别控制器正在填充值的条件?
答案 0 :(得分:0)
我认为你应该使用ng-dirty / pristine。您可以在用户导航时手动设置表单的条件。 填充表单数据时,您可以执行以下操作:
if($scope.myForm.data) {
$scope.myForm.$setDirty
}
您的按钮:
<a href="/#/setup" class="button round" ng-disabled="myForm.$pristine" ng-click="completeStep()">Continue</a>