Угловые сообщения js ng показывают ошибку при инициализации - PullRequest
0 голосов
/ 20 декабря 2018

В моем проекте у меня есть 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 = {};

Я также показываю форму после инициализации <div ng-if="initialized">

Ничего не работает.Проект с использованием angular-seed skeleton

Я видел грязные хаки, как если бы $ коснулся другого, но я хочу понять, что не так ...

1 Ответ

0 голосов
/ 22 декабря 2018

В этом нет ничего плохого, посмотрите образец в официальном руководстве .Они имеют ошибку required, показанную по умолчанию.На первый взгляд это кажется неправильным, но это единственный правильный способ справиться с таким случаем.

Таким образом, в основном, ng-messages делает именно то, что говорит документ:

ngMessagesдиректива, предназначенная для отображения и скрытия сообщений в зависимости от состояния объекта «ключ / значение», который она прослушивает.

директива работает в реальном времени и показывает ошибки для текущего состояния ввода, чтоимеет смысл.Поэтому, если вы не хотите, чтобы сообщения отображались по умолчанию, вам следует использовать некоторые из подходов, которые обсуждались сотни раз

Как сделать так, чтобы ngMessage для обязательных полей показывалось только при грязной или отправке формы?

Angular: проверка ng-сообщения при отправке нажмите

AngularJS: Скрытие ng-сообщения до нажатия кнопки отправки формы

Форма сброса AngularJS 1.5.6 & ng-messages

Если вам нужно какое-то другое улучшенное поведение - в данный момент нет быстрого решения, вы должны придумать свое собственноемеханизм проверки, который соответствует вашим потребностям.

...