在 ng-Submit 后重置表单并抑制 ng-messages

Reset form after ng-Submit and suppress ng-messages

我有一个表单,当我提交时,我会在提交表单时重新初始化它。然后我显示一条消息并停留在同一页面上。

但是,表单的字段会出现错误消息,因为表单已 "touched"。

如下所示:

我已经阅读了一些关于如何解决这个问题的文章,但 none 对我有用。

我的HTML:

<form name="newPost" ng-submit="makeNewPost()">
<div class="form-group">
  <input name="title" maxlength="46" minlength="2" type="text" class="form-control" ng-model="post.title" required="required">
  <div ng-messages="newPost.title.$error" ng-if="newPost.title.$touched">
    <div class="errorMessage" ng-message="required">Title is mandatory *</div>
  </div>
</div>

<input type="submit" value="Submit" class="btn btn-success" id="submit"> 

我的控制器重置数据的代码:

var resetData = function(){
  $scope.post = {};
};

resetData();

当然还有更多的字段,但是要解决这个问题,就用这个简单的代码来演示吧。

任何输入都会有所帮助。谢谢伙计们!

你的 resetData 函数应该是:

$scope.resetData = function(){
  $scope.post = {};
  $scope.newPost.$setUntouched();
  $scope.newPost.$setPristine();
}

其中 newPost 是表单名称和 $setUntouched,$setPristine 将使表单像最初加载的一样原始。在提交函数的末尾调用此函数。