javascript - AngularJS:多种形式的服务器端验证

标签 javascript forms angularjs validation

<form name="bigForm" ng-submit="submit()">
    <div class="form" ng-repeat="cake in cakes">
        <ng-form name="innerForm">
            <input type="text" name="cakeName" ng-model="cake.name">
            <input type="number" name="cakePrice" ng-model="cake.price">
        </ng-form>
    </div>
    <button type="submit">Submit</button>
</form>

在提交时我发送:

{
    [
     { name: "CakeA", price: 111},
     { name: "CakeB", price: 222}
    ]
}

服务器响应是:

{
    [
        { isCakeOk: true },
        { isCakeOk: false, errors: [{ name: "That's a bad name for a cake" }] }
    ]
}

现在,我想以正确的形式在正确的输入上设置“serverValidation”$error。我该怎么做?在单一表单中,我会使用 bigForm.cakeName.$setValidity('serverValidation', false),但如果我有许多由 ng-repeat 创建的 (ng-) 表单怎么办?

最佳答案

如果你想根据服务器响应显示错误信息,那么你可以这样做

将服务器响应分配给

$scope.cakes = [
                { isCakeOk: true },
                { isCakeOk: false, errors: [{ name: "That's a bad name for a cake" }] }
               ];

提交操作后。

类似地,您可以将错误类别分配给输入/标签,让用户知道错误。

如果你想访问 ng-repeat 表单元素,请像这样使用 bigForm.innerForm.cakeName

<script>
    var formApp = angular.module('formApp',[]);
    formApp.controller("FormController",function($scope){
        $scope.cakes =  [{ name: "CakeA", price: 111},{ name: "CakeB", price: 222}];

    });
</script>

<body ng-controller="FormController">
    <div class="form-container">
        <form name="bigForm" ng-submit="submit()">
            <div class="form" ng-repeat="cake in cakes">
                <ng-form name="innerForm">
                    <input type="text" name="cakeName" ng-model="cake.name" ng-required="true">
                    <span class="error">{{cake.errors[0].name}}</span>
                    <input type="number" name="cakePrice" ng-model="cake.price">
                </ng-form>
            </div>
            <button type="submit">Submit</button>
        </form>

    </div>
</body>

关于javascript - AngularJS:多种形式的服务器端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22178942/

相关文章:

javascript - 'require' 在定义之前被使用

javascript - 如何使用 watch 依次运行多个 NPM 脚本

javascript - 当我单击“提交”按钮时,只有验证码正在验证,但其他(例如名字、姓氏、电子邮件)已验证但不起作用

javascript - 在 Canvas HTML 中绘制文本会停止我的算法

javascript - 显示选项文字,而不是值

javascript - src 属性的 Angular 插值错误

javascript - 显示/隐藏内联表单

javascript - 从动态构建的表单提交时,ajaxForm 正在发送空 POST

css - 如何使用 Angular JS 动态化我的 CSS

javascript - 在 Angular js中一次显示一条错误消息