【发布时间】:2016-03-19 02:11:39
【问题描述】:
我从Todd Motto's blog 关注Moving from ngModel.$parsers /ng-if to ngModel.$validators /ngMessages 文章,我想从ng-if 迁移到ng-messages。但是当我尝试向用户显示<input type="email"> 的两条不同消息时,ng-messages 指令的行为非常奇怪:首先,当用户将字段留空时(然后出现 required 错误),其次,当格式错误时(然后 email发生错误) - 它同时显示 required 和 mail 消息,但我的旧代码只显示一条消息 - 关于 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 时我错过了什么吗?提前感谢您的帮助。
【问题讨论】:
标签: javascript angularjs html validation html-input