我有一个由 Angular 控制的表单,我希望这能意识到潜在的重复用户的电子邮件。
我关心的代码在那里: http: //plnkr.co/edit/XQeFHJTsgZONbsrxnvcI
它包含两个指令:
ngFocus
:能够获得任何输入是否聚焦或模糊的信息。它还关注一个hasVisited
变量,以避免blur
在用户至少一次没有到达时验证输入。emailUnique
:执行与已经存在的邮件(硬编码)的简单比较,以便能够验证或不验证email
输入。
重点是:(不要忘记将“tab”触摸以blur
执行功能以查看字段的验证错误)
- 如果我不输入任何内容并转到 Name 输入(以模糊电子邮件输入),它会显示:The field is required。那挺好的。
- 如果我输入一个无效的电子邮件,如字符串“ferfergre”,它会显示:此电子邮件无效。. 那挺好的。
- 然后,如果我输入了与现有硬编码电子邮件不同的有效电子邮件:(michael@gmail.com),则不会显示错误。那挺好的。
- 如果我输入现有邮件:michael@gmail.com,它会显示:此电子邮件已存在。. 这很好,因为它会发出警告。
- 但是,如果在 DOM 周期中至少有一次电子邮件被判断为“此电子邮件已存在”,那么即使我将其更改为新的有效电子邮件,此错误仍然存在......
问题:如何处理最后一种情况?
我有两个假设:
- HTML 属性的顺序很重要:
autofocus email-unique ng-focus required
setValidity
emailUnique
指令代码中的方法ctrl
避免$valid
再次执行,然后阻止再次执行邮件比较。