Подтвердить что ты не робот

Angularjs: ng-message всегда показывает

Я использую angular -messages для отображения ошибок проверки формы в моем приложении angular. Согласно документации, я построил следующий код

<form name="loginForm">
  <label class="item item-input">
    <input type="email" placeholder="Email" ng-model="data.email" name="email" required>
  </label>
  <div ng-messages="loginForm.email.$error" style="color:maroon">
    <div ng-message="required">Please input a valid e-mail address</div>
    <div ng-message="email">You did not enter your email address correctly...</div>
  </div>
</form>

Я включил директиву ngMessages в свой javascript, а также импортировал файл angular -messages.js.

К сожалению, эти два сообщения отображаются постоянно. Независимо от того, что я набираю в поле ввода, будь то действительный адрес электронной почты или нет. Оба сообщения всегда отображаются. Если я попытаюсь включить только одно ng-сообщение, результат будет таким же.

Любая идея, что я могу делать неправильно?

edit: В случае, если мое описание не очень ясное, это печать результата http://s9.postimg.org/du9230tdb/Screen_Shot_2015_06_26_at_17_09_24.png

4b9b3361

Ответ 1

В коде, который вы делитесь, все в порядке.

<form name="loginForm">
    <label class="item item-input">
        <input type="email" placeholder="Email" ng-model="data.email" name="email" required>
    </label>
    <div ng-messages="loginForm.email.$error" style="color:maroon">
        <div ng-message="required">Please input a valid e-mail address</div>
        <div ng-message="email">You did not enter your email address correctly...</div>
    </div>
</form>

Вот рабочая копия на Plunker Я использую ваш фрагмент кода.

От Документация Angularjs.

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

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

Убедитесь, что вы также включили модуль ngMessage и библиотеку. Посмотрите ответ Карлоса.

Спасибо

Ответ 2

Вы должны убедиться, что на самом деле вы используете ngMessage для своего модуля.

var app = angular.module('app', [
    'ngMessages'
])

... и что вы включили библиотеку в свой проект

<script src="/scripts/vendors/angular-messages/angular-messages.js"></script>

Ответ 3

Проверьте с помощью

<div ng-messages="loginForm.email.$error" ng-show="loginForm.email.$invalid && loginForm.email.$touched">
...
</div>

Этот трюк спас мой день.