【问题标题】:Angular JS Form reset with Pristine not working使用 Pristine 重置的 Angular JS 表单不起作用
【发布时间】:2016-08-06 10:46:06
【问题描述】:

我有登录表单, 我在提交表单后清除了表单,并将表单设置为原始模式。 但错误消息仍然存在。

这是我的代码,

<form name="loginForm" ng-submit="loginForm.$valid && login(user)" novalidate style="position: relative">
    <div class="log-input-frm mdl-textfield mdl-js-textfield mdl-textfield--floating-label textfield-demo">
        <div class="col-sm-12 f_name">
            <input ng-model="user.username" name="username" type="email" placeholder="Email address" required="">
            <div ng-show="loginForm.$submitted || loginForm.username.$touched" ng-model="loginForm.username">
                <span ng-show="loginForm.username.$error.required" class="text-danger">Please enter email address.</span>
                <span ng-show="loginForm.username.$error.email" class="text-danger">Please enter valid email address.</span>
            </div>
        </div>
    </div>
    <div class="log-input-frm mdl-textfield mdl-js-textfield mdl-textfield--floating-label textfield-demo">
        <div class="col-sm-12 f_name">
            <input ng-model="user.password" name="password" type="password" placeholder="Password" required="">
            <div ng-show="loginForm.$submitted || loginForm.password.$touched" ng-model="loginForm.password">
                <span ng-show="loginForm.password.$error.required" class="text-danger">Please enter password.</span>
            </div>
        </div>
    </div>
    <div class="buttons">
        <span class="signup pull-left">
            <a ui-sref="forgotpassword">Forgot password</a>
        </span>
        <div class="link">
            <div class="link" style="padding-bottom:0;">
                <md-button type="submit" class="md-raised primary" > Login </md-button>
            </div>
        </div>
    </div>
</form>

用于重置表单并设置为原始模式的控制器代码。

$scope.loginForm.$setPristine();
$scope.loginForm.$setUntouched();
$scope.user = {};

我哪里错了???

【问题讨论】:

  • 也许您需要取消提交表单。这是一个有用的链接:stackoverflow.com/questions/32233876/unsubmit-a-form-in-angular
  • 我按照上面给出的链接进行了尝试,但请注意工作正常,它显示Error: $scope.loginForm.$setPristine is not a function
  • 它应该可以工作。您可以提供Plunker 来更好地说明您的情况。

标签: javascript angularjs


【解决方案1】:

我通过使用超时功能解决了我的问题

$scope.user = {};
$timeout(function () {
    $scope.loginForm.$setPristine();
    $scope.loginForm.$setUntouched();
    $scope.loginForm.$submitted = false;
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 2016-09-11
    • 2014-11-30
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多