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

标签 angularjs

我有以下代码:

            <form class="form"
                  data-ng-submit="modalSubmit(modal.data)"
                  id="modal-body"
                  name="modalForm"
                  novalidate>

这是有效的,当我点击一个提交类型的按钮时,就会调用 modalSubmit 函数。

但是我想在我的 Controller 中做到这一点:
$scope.modalForm.$setPristine();  

但它给出了一个错误说:
has no method '$setPristine'

如何将表单设置为原始状态?我确实尝试添加 data-ng-form="modalForm"但后来我得到
一条消息,说明重复指令名称的影响。

我尝试将表单元素更改为 DIV,但随后单击提交按钮不会调用
功能

这是一个示例(从另一个用户修改),显示了我正在尝试将值设置为原始值的操作:

plnkr.co/edit/LNanJdAggMLIgxii0cfv?p=preview

最佳答案

您在那里没有做错任何事情,唯一的问题是您引用的是旧版本的 angular,其中 $setPristine()不是特色。 $setPristine()已在 1.1.+ 中添加,因此请引用较新版本的 angular,您就可以开始使用了。查看它在 this plunk 中工作,使用 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;
    }
  });
}

关于angularjs - 我如何进行验证并使用 ..$setPristine();以 AngularJS 形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22088904/

相关文章:

javascript - 在 ng-repeat 中显示/隐藏 onclick 按钮

javascript - 如何绕过AngularJS中的模板缓存?

javascript - 根据条件显示和隐藏 html 组件而不使用 div

javascript - angular - catch 退格键

javascript - ChartJS 折线图 - 删除线条下方的颜色

angularjs - NodeJs 和 Mocha 测试响应

angularjs - 没有导出的成员/Node 模块

php - AngularJS,PHP Restful Cors 问题

angularjs - 如何在 Protractor 中独立更新 Selenium 服务器?

javascript - 创建一个绑定(bind)到 AngularJS 中其他输入的计算值数组