在我们的 Angular 应用程序中,我们有一个带有验证和重置按钮的表单。我们基于文档中的示例:https ://docs.angularjs.org/guide/forms
当有人在字段处于无效状态时尝试重置表单时,就会出现问题。我的期望是重置后,该字段应重置为初始值,并且任何验证也将被重置。但是,我还没有弄清楚如何清除验证。
这可以在文档中的上述示例中进行演示:https ://docs.angularjs.org/guide/forms 加载演示并输入无效的电子邮件地址 ( potatoes
),然后按重置。它会重置有效字段,但不会无效。我们已经尝试使用$setPristine()
和摆弄$valid
也没有导致任何地方。这似乎是一个直接的用例,但我无法找到任何答案。请有人指出我们忽略的微不足道的解决方案!
更新:从https://docs.angularjs.org/guide/forms添加代码
<div ng-controller="ExampleController">
<form novalidate class="simple-form">
Name: <input type="text" ng-model="user.name" /><br />
E-mail: <input type="email" ng-model="user.email" /><br />
Gender: <input type="radio" ng-model="user.gender" value="male" />male
<input type="radio" ng-model="user.gender" value="female" />female<br />
<button ng-click="reset()">RESET</button>
<button ng-click="update(user)">SAVE</button>
</form>
<pre>form = {{user | json}}</pre>
<pre>master = {{master | json}}</pre>
</div>
<script>
angular.module('formExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.master = {};
$scope.update = function(user) {
$scope.master = angular.copy(user);
};
$scope.reset = function() {
$scope.user = angular.copy($scope.master);
};
$scope.reset();
}]);
</script>