Angular 1.2.9 有效提交后重置字段和验证

Angular 1.2.9 resetting field and validation after valid submit

我在尝试重置我的表单时遇到问题,但没有出现必填字段错误消息。提交时,如果表单有效,我将调用以下函数。

$scope.reset = function() {
  $scope.createUser.$submitted = false;
  $scope.createUser.$dirty = false;
  $scope.createUser.$pristine = true;
  $scope.user = angular.copy($scope.master);
  $scope.createUser.$setPristine(true);
}

这会重置表单,但会提示以下消息。

我一直在寻找一种将表单重置为 prestine 的方法,但没有任何运气,我不确定它是否是因为我添加 has-error class.

的方式
ng-class="{'has-error': (createUser.name.$dirty || submitted) && createUser.name.$error.required}"

如果有任何帮助,我将不胜感激,我有 plunker 可以使用。

您似乎没有重置您在 has-error 中使用的已提交变量。您正在重置 $submitted

我不确定这是否是您想要的,但这 plunker 是否解决了您的问题? 首先,就像 Mathew 所说的那样,您对提交的变量有疑问,$submitted 未在您想使用提交的任何地方定义。 并且您想检查您的表格,只有在正确的情况下才将其设置为 false。

我也会像这样进行验证

ng-class="{'has-error': (createUser.name.$dirty && createUser.name.$invalid && submitted)}"

但对于控制器,您不必这样做:

$scope.reset = function() {

        $scope.submitted = true;
        if($scope.createUser.$valid){
          $scope.submitted = false;
          $scope.createUser.$dirty = false;
        $scope.createUser.$pristine = true;
        $scope.user = angular.copy($scope.master);
        $scope.createUser.$setPristine(true);
        }


    }

编辑您的重置函数:

$scope.reset = function() {

    $scope.createUser.$submitted = false;

}

你不需要别的了..祝你好运:)