提问人:Fernando Fradegrada 提问时间:9/7/2016 最后编辑:CommunityFernando Fradegrada 更新时间:9/9/2016 访问量:6932
AngularJS - 更改字段后如何设置有效性 true
AngularJS - How to set validity true after change the field
问:
我按照这个答案运行自定义服务器端验证,以查找唯一的电子邮件约束。
这是我在控制器上的提交功能:
function submit(form){
CompanyUser.save(vm.model)
.success(function(data) {
vm.closeModal();
toastSucess(data);
})
.error(function(data) {
if(data.code == 'error_duplicated_email')
form['email'].$setValidity("uniqueEmail", false);
});
}
这是我的电子邮件 HTML 代码:
<form name="form" novalidate ng-click="form.$valid && vm.submit(form)">
<div class="form-group" ng-class="{ 'has-error': form.$submitted && form.email.$error.uniqueEmail }">
<label>E-mail</label>
<input type="email" class="form-control" name="email" ng-model="vm.model.email" required>
<span ng-show="form.$submitted && form.email.$error.uniqueEmail" class="help-block">Duplicated e-mail</span>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-white" ng-click="vm.closeModal()">Cancel</button>
<button type="submit" class="btn btn-primary">Save</button>
</div>
</form>
一旦该服务器返回错误,就可以正常工作。但是,然后我更改了电子邮件并尝试提交,但我不能再这样做了。我认为这是因为我已将 .那么,如何设置为 true 以尝试再次提交表单呢?validity
false
答:
0赞
Hugo Nakamura
9/7/2016
#1
您可以尝试使用该方法。$setPristine();
来自 angular 文档:
$setPristine();将窗体设置为其原始状态。
此方法将窗体的$pristine状态设置为 true,即$dirty状态 如果为 false,则删除 ng-dirty 类并添加 ng-pristine 类。 此外,它还将$submitted状态设置为 false。
此方法还将传播到此包含的所有控件 形式。
当我们需要时,将表单设置回原始状态通常很有用 在保存或重置表单后“重用”表单。
评论
1赞
Fernando Fradegrada
9/7/2016
但是你会在哪里使用它呢?
0赞
Hugo Nakamura
9/8/2016
一旦该服务器返回错误,您是否会重置您的字段?
0赞
Fernando Fradegrada
9/9/2016
#2
以下是@code90的解决方案:
我需要添加一个ng-change="form.$valid=true"
<input type="email"..
而且效果很好!
评论
0赞
coderman
1/21/2020
我需要设置该特定控件的有效性
评论
ng-change="form.$valid=true"
<input type="email"..