如何进行验证并使用..$setPristine();以AngularJS的形式?

如何进行验证并使用..$setPristine();以AngularJS的形式?,angularjs,Angularjs,我有以下代码: <form class="form" data-ng-submit="modalSubmit(modal.data)" id="modal-body" name="modalForm" novalidate> 但它给出了一个错误的说法: has no method '$setPristine' 我怎

我有以下代码:

            <form class="form"
                  data-ng-submit="modalSubmit(modal.data)"
                  id="modal-body"
                  name="modalForm"
                  novalidate>
但它给出了一个错误的说法:

has no method '$setPristine'
我怎样才能将表格设置为原始状态?我确实尝试过添加
数据ng form=“modalForm”
,但后来我发现 表示重复指令名的消息

我尝试将表单元素更改为DIV,但是单击submit按钮并没有调用 功能

下面是一个示例(由另一个用户修改),它显示了我正在尝试将值设置为pristine:


它已经在本手册中实施,您可以使用它,正如在plnkr链接中演示的那样。 从上面的描述中可以看到,$setPristine只更改表单的状态(从而重置应用于表单中每个控件的css)


如果要清除每个控件的值,则需要在代码中对每个控件执行操作。

您没有做错任何事情,唯一的问题是您引用的是angular的旧版本,
$setPristine()
不是该版本的功能<代码>$setPristine()是在1.1.+中添加的,因此请参考angular的更新版本,这样就可以开始了。请参见使用1.2++在中工作

如果您无法升级,那么一个棘手的解决方法是循环表单中的所有输入,并手动设置它们的$dirty和$pristine值:

$scope.mp = function() {
  $scope.mainForm.$pristine=true;//clean main form
  $scope.mainForm.$dirty=false;
  angular.forEach($scope.mainForm,function(input){//clean all input controls
    if (input !== undefined && input.$dirty !== undefined) {
      input.$dirty=false;
      input.$pristine=true;
    }
  });
}

首先,您的angular版本很旧,1.2.12是CDN上最新的稳定版本。但即使是它也不允许$setPristine,因为正在进行的HTML5验证

最大的问题是您在字段中使用了
required
,而不是
ng required
。浏览器正在为您执行表单验证,而不是角度验证。您还可以将
novalidate
属性添加到表单标记中


问题是,我收到一条消息,说没有方法$setPristineit如果您发布代码的其他部分,那就太好了,可能是您使用了一些错误的东西,可能是因为这就是它给您带来错误的原因。但我还是把ng提交按钮放在了表单中,点击提交按钮,它会显示表单,我也更新了plunkr。谢谢你的帮助。下面是我的例子:是
ng required
为我做的。令人惊叹的!
$scope.mp = function() {
  $scope.mainForm.$pristine=true;//clean main form
  $scope.mainForm.$dirty=false;
  angular.forEach($scope.mainForm,function(input){//clean all input controls
    if (input !== undefined && input.$dirty !== undefined) {
      input.$dirty=false;
      input.$pristine=true;
    }
  });
}