我有一个多部分的表单,我希望有一个外部的下一个/上一个导航。但是,我需要能够在导航到下一个时验证表单的每个部分。
我有以下示例表单定义:
<form layout="column" name="nProfileForm1">
<md-input-container>
<label>City</label>
<input ng-model="profile.city" required="" name="nCity">
<div ng-messages="nProfileForm1.nCity.$error" ng-if="nProfileForm1.nCity.$touched&&!nProfileForm1.nCity.$valid">
<div ng-message="required">City is required.</div>
</div>
</md-input-container>
</form>
如果与字段交互,则验证正在查找并正确显示错误文本。但是,如果发生外部事件,我想不出触发所有表单字段验证的方法。将自己的提交按钮添加到每个表单部分似乎有些错误。我正在寻找的是类似于模式形式的作用:
$scope.$broadcast('schemaFormValidate')
任何想法将不胜感激。
本质上,在下面的示例中,我希望字段在按下一步后以红色亮起:http://codepen.io/Vladimir_M/pen/OWEjOd
更新:更新了代码笔以包含我找到的一个解决方案。
经过一些尝试,我找到了一种方法,可以用最少的代码实现我所追求的效果。获取窗体的范围并将窗体的 $submitted 属性设置为 true 可以解决问题。它评估整个表单。
$scope.doSubmit = function(){
var formScope = angular.element(nProfileForm1).scope();
formScope.nProfileForm1.$submitted = true;
}
随意提出更好的方法。