【问题标题】:Angular js ng messages show error on initAngular js ng消息在初始化时显示错误
【发布时间】:2018-12-20 11:48:35
【问题描述】:

在我的项目中,我有 angularjs 1.5.10 和 ng-messages 1.5.10。我以简单的形式使用它:

<form class="form-horizontal" ng-submit="createBooking()" role="form" name="createBookingForm" novalidate>
    <div class="form-group">
                            <label for="payment_details_last_name" class="col-sm-3 control-label">Last name</label>
                            <div class="col-sm-6">
                                <input type="text"
                                       id="payment_details_last_name"
                                       name="payment_details_last_name"
                                       class="form-control"
                                       ng-model="payment_details.last_name"
                                       ng-required="true"
                                       ng-maxlength="30" />
                                <div ng-messages="createBookingForm.payment_details_last_name.$error" role="alert">
                                    <div ng-message="required">This field is required</div>
                                    <div ng-message="maxlength">Your field is too long</div>
                                </div>
                            </div>
                            <div class="col-sm-3"></div>
                        </div>
</form>

在控制器中:

$scope.members = [{
      'first_name': '',
      'last_name': '',
      'email': '',
      'phone_number': '',
      'date_of_birth': '',
    }];

最初我总是看到错误This field is required。我试图在控制器中创建空对象:

$scope.createBookingForm = {};

初始化&lt;div ng-if="initialized"&gt;后我也显示表单

没有任何工作。项目使用angular-seedskeleton

我看到了像 if $touched else 这样的肮脏技巧,但我想了解哪里出了问题...

【问题讨论】:

    标签: angularjs ng-messages


    【解决方案1】:

    没有错,请查看official guide 中的示例。他们默认显示required 错误。乍一看似乎是错误的,但这是处理这种情况的唯一正确方法。

    所以基本上,ng-messages 完全按照文档所说的:

    ngMessages 是一个用于显示和隐藏消息的指令 基于它所侦听的键/值对象的状态。

    该指令实时工作并显示当前输入状态的错误,这是有道理的。 因此,如果您不希望默认显示任何消息,则应该使用一些方法,讨论了数百次

    How to make ngMessage for required fields only show when dirty or submitting a form?

    Angular : ng-message validation on submit click

    AngularJS: Hiding ng-message until hitting the form-submit button

    AngularJS 1.5.6 reset form & ng-messages

    如果您需要其他一些改进的行为 - 目前没有快速的解决方案,您必须想出适合您需求的自己的验证引擎。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-19
      • 2014-11-10
      • 2012-11-26
      • 2016-09-14
      • 1970-01-01
      • 2021-05-15
      相关资源
      最近更新 更多