Angular 1.2.1 中的 $setPristine() 方法似乎没有按预期工作

2024-03-07

我正在尝试使用以下命令重置文本框$setPristineAngularJS 中的函数,但是它似乎没有产生所需的行为。

我的表格如下所示:

<form name="addInviteForm" ng-controller="InviteCtrl" ng-submit="sendInvitation(userEmail)">

      Pristine? {{addInviteForm.$pristine}}

      <!-- email input -->
      <div>
        <input type="email" name="email" ng-model="userEmail" placeholder="Enter email here"  class="line-item-input see" required>
        <span class="error" ng-show="addInviteForm.email.$error.email" style="color:red">Invalid Email</span>
      </div>

      <!-- submit button -->
      <input type="submit" name="send" class="btn btn-success center" value="Send Invitation">
</form>

以及我的控制器中的相应代码:

$scope.sendInvitation = function(userEmail) {

        // do some work here ...

        // hmm, this doesn't seem to work ...
        $scope.addInviteForm.$setPristine();
    };

虽然表格显示$pristine被设定为true输入表单后,然后设置为false在文本框中输入数据时,提交表单后确实显示$pristine设置为 true .... 但文本框中的值仍保持按下提交按钮之前的状态。

我在这里缺少什么?


$setPristine不清除表单中控件的值:

From the docs http://docs.angularjs.org/api/ng.directive:form.FormController:

将表单设置为其原始状态。

可以调用此方法来删除 'ng-dirty' 类并设置 形成其原始状态(ng-pristine 类)。该方法还将 传播到此表单中包含的所有控件。

当我们想要时,将表单设置回原始状态通常很有用 保存或重置表单后“重用”表单。

从上面的描述可以看出,$setPristine仅更改表单的状态(从而重置应用于表单中每个控件的 css)。

如果您想清除每个控件的值,那么您需要在代码中对每个控件执行此操作。

这个笨蛋 http://plnkr.co/edit/815Bml?p=preview shows $setPristine在行动中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 1.2.1 中的 $setPristine() 方法似乎没有按预期工作 的相关文章

随机推荐