【问题标题】:$setPristine() not working for form reset with angular 1.4$setPristine() 不适用于 Angular 1.4 的表单重置
【发布时间】:2016-04-02 01:21:28
【问题描述】:

HTML:

<form name="ContactForm" novalidate >
    <div class="list">
      <label class="item item-input">
        <input type="text" placeholder="First Name" ng-model="contact.firstName" name="uFirstName" required="" autocomplete="off"/>
      </label>
        <br>
        <div ng-show="ContactForm.$submitted || ContactForm.uFirstName.$touched" ng-hide="hidespan">
        <span class="error" ng-show="ContactForm.uFirstName.$error.required">Tell us your First Name.</span>
        <span class="error" ng-show="ContactForm.uFirstName.$error.text">This is not a valid First Name.</span>
        </div> 
        </div>
    <button class="button button-block button-assertive" ng-click="ContactForm.$valid && contactReq(contact)">
      Submit
    </button> 
    </form>

JS

var defaultForm = {
        firstName : "",
        lastName : "",
        email : "",
        message : ""
    }

    $scope.contact = angular.copy(defaultForm);

    $scope.contactReq = function(contact){
        $scope.ContactForm.$setPristine();
        $scope.contact = angular.copy(defaultForm);
        console.log('empty');
    }

我正在使用 AngularJS v1.4.3 进行 phonegap 开发。单击提交按钮后,我想重置表单。但是当我设置 Pristine 时,我收到以下错误:“错误:错误:未定义不是对象(正在评估 '$scope.ContactForm.$setPristine')” 我尝试了许多相关的链接,但没有任何东西对我有用。

非常感谢任何帮助。

【问题讨论】:

标签: angularjs


【解决方案1】:

我在使用 Safari 9.01 时遇到了一个奇怪的问题。从登录页面切换到注册页面后,我的表单输入不可编辑。

所以我尝试使用 $setPristine() 方法并遇到了同样的问题。我发现在重置函数中设置超时允许我访问表单。

你可以试试:

    $scope.contactReq = function(contact){
        $timeout(function(){
            $scope.ContactForm.$setPristine();
            $scope.contact = angular.copy(defaultForm);
            console.log('empty');
        },10);
    }

如果这不起作用,请尝试使用 this.ContactForm.$setPristine(); 而不是 $scope.ContactForm.$setPristine();

我的问题最终成为我使用 ui-router 在视图之间切换的方式的问题。

祝你好运!

【讨论】:

    【解决方案2】:

    ContactForm 应该在范围内。 只是猜测:在调用 setPristine() 之前将默认表单的值复制到模型中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-14
      • 2016-10-21
      相关资源
      最近更新 更多