angularjs - 表单提交后如何重置 Angular js中的表单字段

标签 angularjs reset

我正在使用 Angular js 提交表单。 我想提交后重置表单字段

DEMO_ANGULAR JS

   $scope.addUser = function() 
    {
        $scope.errors = [];
        $scope.msgs = [];

        $scope.errors.splice(0, $scope.errors.length); // remove all error messages
        $scope.msgs.splice(0, $scope.msgs.length);

        $http.post("../admin/users/add_user", {'fname': $scope.fname, 'lname': $scope.lname, 'uname': $scope.uname,'gender': $scope.gender,'email': $scope.email,'mobile': $scope.mobile,'pass': $scope.pass}
        ).success(function(data, status, headers, config) {

            if (data.msg != '')
            {
                $scope.msgs.push(data.msg);
                $scope.get_users();
                $scope.form_add.$setPristine();
                $scope.currentRecord={};
            }
            else
            {
                $scope.errors.push(data.error);
            }
        }).error(function(data, status) { // called asynchronously if an error occurs
// or server returns response with an error status.
            $scope.errors.push(status);
        });
    }

这是我添加用户的 View (HTML) 表单:

<form name="form_add" method="post">
                     <ul>
                        <li style="color:red" ng-repeat="error in errors"> {{ error}} </li>
                    </ul>
                    <ul>
                        <li style="color:green" ng-repeat="msg in msgs"> {{ msg}} </li>
                    </ul>
                        <table class="table" cellspacing=10 cellpadding=10>
                        <tr>
                        <td>First Name: <input required type="text" ng-pattern="/[a-zA-Z]$/"  ng-model="fname"  name="fname" id="fname" value=""/><br/>
                        <span style="color:red" ng-show="form_add.fname.$dirty && form_add.fname.$invalid">
                                <span ng-show="form_add.fname.$error.required">First Name is required.</span>
                                <span ng-show="form_add.fname.$error.pattern">Invalid</span>
                        </span>
                        </td>
                        <td>Last Name: <input required type="text" ng-pattern="/[a-zA-Z]$/" ng-model="lname" name="lname" id="lname" value=""/><br/>
                        <span style="color:red" ng-show="form_add.lname.$dirty && form_add.lname.$invalid">
                                <span ng-show="form_add.lname.$error.required">Last Name is required.</span>
                                <span ng-show="form_add.lname.$error.pattern">Invalid</span>
                        </span>
                        </td>
                        <td>User Name: <input required type="text" ng-pattern="/^[a-zA-Z0-9]{6,15}$/"   ng-model="uname" name="uname" id="uname" value=""/><br/>
                        <span style="color:red" ng-show="form_add.uname.$dirty && form_add.uname.$invalid">
                                <span ng-show="form_add.uname.$error.required">User Name is required.</span>
                                <span ng-show="form_add.uname.$error.pattern">Invalid: Minimum 6 characters and maximum 15 characters</span>    
                        </span>
                        </td>
                        <td width="20%">Gender :<br/> <input type="radio"  ng-model="gender" name="gender" id="r1" value="m" checked />Male
                        &nbsp;&nbsp;<input type="radio"  ng-model="gender" name="gender" id="r2" value="f"/>Female</td>
                        </tr>
                        <tr>
                        <td>Email ID: <input type="text" required ng-pattern="/^[a-z]+[a-z0-9._]+@[a-z]+\.[a-z.]{2,5}$/"  ng-model="email" name="email" id="email" value=""/><br/>
                            <span style="color:red" ng-show="form_add.email.$dirty && form_add.email.$invalid">
                                <span ng-show="form_add.email.$error.required">Email is required.</span>
                                <span ng-show="form_add.email.$error.pattern">Invalid email address.</span>
                            </span>
                        </td>
                        <td>Mobile : <input type="text" required  ng-model="mobile" ng-pattern="/^[1-9]{1}[0-9]{9}$/"  name="mobile" id="mobile" value=""/><br/>
                        <span style="color:red" ng-show="form_add.mobile.$dirty && form_add.mobile.$invalid">
                                <span ng-show="form_add.mobile.$error.required">Mobile is required.</span>
                                <span ng-show="form_add.mobile.$error.pattern">10 digits required</span>
                        </span>
                        </td>
                        <td>Password : <input required type="password" ng-model="pass" name="pass" id="pass" value=""/>
                        <span style="color:red" ng-show="form_add.mobile.$dirty && form_add.mobile.$invalid">
                                <span ng-show="form_add.mobile.$error.required">Mobile is required.</span>
                                <span ng-show="form_add.mobile.$error.pattern">10 digits required</span>
                        </span>
                        </td>
                        <td><button type="button" class="btn btn-primary" ng-click='addUser();' ng-disabled="form_add.$invalid">Save</button></td>
                        </tr>

                        </table>

                    <br/>
                    </form>

提交后如何重置表单,上面的代码有什么变化吗? 我的问题还没有解决!

最佳答案

您可以为您的模型尝试一个基础对象。请参阅示例

<form action="">
    <label for="">Name</label>
    <input type="text" ng-model="user.model">
    <label for="">Email</label>
    <input type="text" ng-model="user.email">
    <label for="">Password</label>
    <input type="password" ng-model="user.password">
    <button type="submit">Submit</button>
</form>

对于 Angular

$scope.addUser = function() 
    {
$scope.errors = [];
        $scope.msgs = [];

         $http.post("your/desire/url", yourData)
         .success(function(data, status, headers, config) {

            if (data.msg != '')
            {
                //do something
                //reseting form
                $scope.user='';
            }
            else
            {
                $scope.errors.push(data.error);
            }
        }).error(function(data, status) { 
            $scope.errors.push(status);
        });

    }

完成提交表单后,您必须重置模型基础对象

$scope.user='';

我认为它会工作得很好:)

关于angularjs - 表单提交后如何重置 Angular js中的表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30705170/

相关文章:

AngularJS 初始加载时间优化

AngularJS 在一个 Controller 中更改模型值会触发其他 Controller 中的模型更新

forms - 清除p :dialog on close after failed action/method call中的表格

macos - 在Mac上重置DNS缓存

laravel - 覆盖电子邮件模板 Laravel 5.3 中的密码重置 url

html - 重置文本字段表单的代码是什么?

css - Ionic - 如何更改文本字段的背景颜色?

javascript - 在 ui-router 中从较低状态覆盖较高状态的布局 View 会导致 ui-view 为空

javascript - 如何获取 Javascript 数组中某个对象之前的最后 N 个对象?

Angular Material : Reseting reactiveform shows validation error