如何在表单提交后重置角度js中的表单字段

时间:2015-06-08 09:10:34

标签: angularjs reset

我使用角度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);
        });
    }

这是我添加用户的视图(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>

如何在提交后重置表单,以上代码中的任何更改? 我的问题尚未解决!

3 个答案:

答案 0 :(得分:2)

您可以为您的模型尝试基础对象。参见示例

<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>

for 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 = '';

我认为它会正常工作:)

答案 1 :(得分:2)

你可以这样休息:

就像你有一个表格:

 <form novalidate class="css-form">
    Name: <input type="text" ng-model="user.name" required /><br />
    E-mail: <input type="email" ng-model="user.email" required /><br />
    Gender: <input type="radio" ng-model="user.gender" value="male" />male
    <input type="radio" ng-model="user.gender" value="female" />female<br />
    <input type="button" ng-click="reset()" value="Reset" />
    <input type="submit" ng-click="update(user)" value="Save" />
  </form>

因此,重置按钮的代码将起作用:

$scope.master = {};
if (form) {
   form.$setPristine();
   form.$setUntouched();
}
$scope.user = angular.copy($scope.master);

这肯定是短暂的工作

答案 2 :(得分:0)

以这种方式解决: 我已使用此代码重置:

$scope.fname='';
$scope.lname='';
$scope.uname='';
$scope.email='';
$scope.mobile='';
$scope.pass='';
$scope.form_add.$setPristine();