Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 如何在$http响应后更新角度验证消息?_Validation_Angularjs - Fatal编程技术网

Validation 如何在$http响应后更新角度验证消息?

Validation 如何在$http响应后更新角度验证消息?,validation,angularjs,Validation,Angularjs,我正在使用$http(.$http)提交表单。服务器返回JSON: [{ "hasValidationErrors": true, "validationErrors": { "inputNameAttributeValue": "Error Message 1", "anotehrInputNameAttributeValue": "Error Message 2" } }] 收到JSON响应后,如何通知Angular某些表单字段处

我正在使用$http(.$http)提交表单。服务器返回JSON:

[{
    "hasValidationErrors": true,

    "validationErrors": {
        "inputNameAttributeValue": "Error Message 1",
        "anotehrInputNameAttributeValue": "Error Message 2"
    }

}]
收到JSON响应后,如何通知Angular某些表单字段处于错误状态,以便它自动更改视图以显示错误消息

例如,如果我使用此标记(从):


你的名字
你的名字是必需的。
您的姓名必须至少包含3个字符
您的姓名不能超过20个字符
我正在寻找一种与html文档中现有的数据绑定标记一起使用的解决方案


我可以更改标记,但我不希望每个表单输入有两个单独的标记部分(一个用于客户端验证,另一个用于JSON响应后的验证)。

更新:

例如,如果用户未触及必需的表单字段 在提交表单之前,它们不会显示错误消息。所以 我的目标是,在提交表单时,所有表单字段都将得到验证 并在需要时显示验证消息

这是因为
ng show
$dirty
$invalid
标志触发。
触发时,您可以手动将所有输入字段的
$dirty
设置为
true

但是,如果用户篡改了表单,JSON 来自服务器的响应应用于添加验证消息,如下所示: 嗯

若在服务器上验证失败,只需将这些被篡改的值带回客户端的角度模型,并在需要时使用。AngularJS应该完成剩下的工作

模拟示例:


产地:

将错误消息设置到作用域,并在定义时简单地显示它,怎么样

scope.errorMessages=returnedJson.validationErrors

只需添加一个用于显示来自服务器的自定义消息的块

<!-- place error messages next to corresponding input fields. -->
<small class="error" 
    ng-show="errorMessages.inputName"
    ng-bind="errorMessages.inputName"></small>


谢谢,听起来不错,但如果我这样做,在再次提交表单之前,字段似乎将保持错误状态。是这样吗?相反,我希望验证消息在用户键入有效值后立即消失。有没有办法只向Angular发出请求:请对name=x的表单字段执行验证?或者,请对所有表单字段执行验证?那么,我就不需要像您的示例中那样添加额外的“小”标记了。您对服务器/客户端有不同的验证规则吗?没有,服务器和客户端上的验证规则是相同的。因此。。是否只想显示自定义消息?因为无论您是否提交表单,客户端都应该根据该标记反映输入值的错误状态。我不想寻找显示自定义验证消息的方法。在一种情况下,客户端并不总是按照需要显示验证消息。例如,如果用户在提交表单之前未触及必需的表单字段,则它们不会显示验证消息。所以,我的目标是,在表单提交时,所有表单字段都将被验证,并在需要时显示验证消息。首先,应该使用客户端验证。但是,如果用户篡改了表单,那么也应该使用来自服务器的JSON响应来添加验证消息。
<!-- place error messages next to corresponding input fields. -->
<small class="error" 
    ng-show="errorMessages.inputName"
    ng-bind="errorMessages.inputName"></small>