【问题标题】:angularjs: ng-message always showingangularjs:ng-message 总是显示
【发布时间】:2015-09-12 11:02:00
【问题描述】:

我正在使用 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>

我在我的 javascript 中包含了 ngMessages 指令,并导入了 angular-messages.js 文件。

不幸的是,这两条消息一直在显示。无论我在输入字段中输入什么,它是否是有效的电子邮件。两条消息始终显示。如果我尝试只包含一个 ng-message,结果是一样的。

我做错了什么?

编辑:如果我的描述不是很清楚,这是结果的打印 https://s9.postimg.cc/du9230tdb/Screen_Shot_2015_06_26_at_17_09_24.png

【问题讨论】:

  • @ostrich javascript 的真正问题是什么?我遇到了同样的问题。完全迷路了!

标签: angularjs ng-messages


【解决方案1】:

您必须确保您实际上将 ngMessage 包含到您的模块中。

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

...并且您将库包含到您的项目中

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

【讨论】:

  • 我遇到了同样的问题,而您的解决方案正是我忘记检查的。我正在学习 Pluralsight 课程:'AngularJS Line of Business Applications'。课程材料基于 Angular 1.2,因此不继续描述如何使用 ng-message(这是 1.3+ 的一个特性)。
  • 你救了我的命!谢谢!
【解决方案2】:

您共享的代码中似乎一切正常。

<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>

Here is a working copy on Plunker我正在使用你的代码。

来自Angularjs documentation

默认情况下,ngMessages 一次只会显示一个错误。但是,如果您希望显示所有消息,则可以在包含 ngMessages 指令的元素上使用 ng-messages-multiple 属性标志来实现这一点。

如果您想在字段脏后显示错误,请访问此link

确保您也包含 ngMessage 模块和库。请参阅Carlos's answer

谢谢

【讨论】:

  • 我真的不明白这里可能出了什么问题。我的项目中的表单代码与您在 Plunker 上的代码完全相同(除了在本地完成的 js 导入),但结果却不一样。为了清楚起见,我不想同时显示多条消息。但这就是正在发生的事情。这是结果的打印s9.postimg.org/du9230tdb/Screen_Shot_2015_06_26_at_17_09_24.png
  • 如果你愿意,我也可以发布我的代码的打印屏幕,但出于害怕出现一些愚蠢的错字,我从你的 plunker 复制粘贴了一个。还是行不通。谢谢你的帖子
  • 这是我需要解决的问题。 1-您的代码的屏幕截图。 2- 打开 chrome devtools 并仔细检查控制台上没有任何错误(假设您使用的是 Chrome :))。我很乐意提供帮助。谢谢
  • 天哪。我什至从未想过问题可能出在 javascript 上,因为我所要做的就是添加 ngMessages 模块。原来我在错误的地方做这件事。奇怪的是它没有引发任何错误。无论如何,你已经引导我找到解决方案。你有我最深切的感谢。
  • 不要忘记将“ngMessage”添加到您的应用中:angular.module('yourApp', ['ngMessages'])...
【解决方案3】:

检查

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

这个技巧拯救了我的一天。

【讨论】:

  • 当然可以,但它是“作弊”——您实际上不再使用 ng-messages 功能,而是使用 ng-show 来完成同样的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 2020-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多