在资源错误回调的范围内访问表单
Accessing form from scope inside resource error callback
我在提交时做客户端验证,如果表单有效,我调用资源,成功一切都很好,但现在在错误处理程序上,我在数据传输对象bean上做服务器端验证,也有一些Hibernate验证器注释,当这些失败时,我返回一个带有失败字段名和消息的json。现在我想把我的输入字段从我的Angular控制器中设置为无效,但是我无法从范围中访问表单,甚至无法将其作为错误回调函数的参数。
$scope.submit = function (saleForm) {
if (saleForm.$invalid) {
return;
}
$scope.sale.$save(function (sale) {
$modalInstance.close(sale);
$scope.alerts.push({type: 'success', msg: 'Sale successfully added!'});
}, function (errors) {
for (var field in errors.data) {
$scope.saleForm.$setValidity(field, false); // <-- wrong approach?
}
})
};
我从json中得到的字段名与我的web上的字段名匹配。我哪里做错了?使用循环,我想将返回的所有字段设置为无效状态。
除了上面评论中已经提到的错误之外,您还错误地使用了$setValidity()
函数。
$setValidity
接受两个参数:
1. validationErrorKey(字符串)
2. isValid(布尔)
当您将validationErrorKey的有效性设置为false
时,"撤销"它的唯一方法是将相同的validationErrorKey的有效性设置为true
。
通过调用$setValidity(false)
,您实际上调用了$setValidity('false', undefined)
,相当于$setValidity('false', false)
。
但是,由于没有任何东西将validationErrorKey 'false'
的有效性设置为true
,因此您的控件将永远无效。
要解决这个问题,还需要指定validationErrorKey。
例如,一个数字字段可能是无效的,因为它不是一个数字(validationErrorKey: number
),因为它超过了最大允许值(validationErrorKey: max
),因为它是必需的和空(validationErrorKey: required
)等。
saleForm[field].$setValidity(errorKey, false);
- 使用 ng-repeat访问 ng 表单元素/值
- 使用 JavaScript 访问动态表行的值
- 访问动态表单数组 HTML/Bootstrap/Javascript
- 使用Javascript访问/更改表中的信息
- 从不同的javascript文件访问HTML表单提交的值
- Cakephp:从视图访问数据库表
- 如何在 ng 重复中访问 Angular 表单上的$valid
- 如何访问当前表行的特定单元格
- 如何将匿名函数绑定到表单的提交,然后访问该表单的内容以进行 AJAX 提交
- 使用 Jquery 访问 html 表体
- 无法通过 Node Express 应用程序(车把)中的部分访问样式表
- 访问位于表 TD 内的 HTML 选择元素
- 如何使用javascript访问动态表单中的元素
- 如何访问HTML表中元素的属性
- 是否有任何方法可以从JavaScript访问浏览器表单字段建议
- 通过Javascript访问HTML表单元素
- 从Sequelize getter方法访问关联表
- 访问数据表之外的ajax数据
- Jquery -无法访问网页表单中列表/选择框中的单个元素
- 使用Node.js访问azure表存储