角度形式验证 - ng-valid开始

时间:2015-04-27 22:27:52

标签: angularjs

我正在使用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或识别控制器正在填充值的条件?

1 个答案:

答案 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>