AngularJS:ngMessage使用类型"电子邮件"输入的奇怪行为

时间:2015-12-13 15:33:30

标签: javascript angularjs html5 validation html-input

我关注Moving from ngModel.$parsers /ng-if to ngModel.$validators /ngMessages中的Todd Motto's blog文章,我希望从ng-if迁移到ng-messages。但是当我尝试向用户显示ng-messages的两个不同消息时,<input type="email">指令表现得非常奇怪:首先,当用户将字段留空(然后发生required错误)时,第二,当格式为错误(然后发生email错误) - 它会同时显示requiredmail条消息,但我的旧代码只显示一条消息 - 大约required错误 - 这就是我认为欢迎行为。这是简化的代码:

<form name="ngMessageMailForm">
  <input type="email" required="" name="email" ng-model="ctrl.ngMessageMail" />
  <div ng-messages="ngMessageMailForm.email.$error" ng-if="ngMessageMailForm.email.$touched">
    <span ng-message="email">
      E-mail has not proper format<br />
    </span>
    <span ng-message="required">
      E-mail is required<br />
    </span>
  </div>
</form>

您可以在此Plunker中找到旧代码和新代码之间的比较:Ng-if vs ng-messages at plnkr.co,以重现ng-message在邮件输入内部和外部点击的奇怪行为。如果是ng-if表单,您会看到一条消息,如果是ng-message形式,则会看到两条消息。 从ng-if迁移到ng-messages时,我是否遗漏了一些内容?提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

一切都很好,但您错过了将angular-messages库添加到您的项目中......

将其文件添加到您的项目并将ngMessages注入您的angularjs模块,然后您就可以了...

here is update plunker