【问题标题】:angularjs - custom directive name "smart-float"angularjs - 自定义指令名称“smart-float”
【发布时间】:2014-04-03 14:13:34
【问题描述】:

我有一个简单或非常奇怪的问题:

在angular官方表单教程中,有一段“自定义验证”:
http://docs.angularjs.org/guide/forms

然后我将代码复制到 Plunker:
http://plnkr.co/edit/6pcUJNUD3Zkyv5bx6OTe?p=preview

我想要的是输入需要做 2 次验证:必需和智能浮动, 目前,Plunker 代码运行良好。

但是如果你把指令名“smart-float”改成另外一个,比如“all-eng”,这就变成了一个小问题:
如果您输入的不是浮点数,则会显示“必需”和“浮点”验证错误both

我尝试使用 Chrome 33、Firefox 27,但没有运气
谷歌“angularjs 指令名称限制”,没有运气
谷歌“angularjs 指令名称 smart-float”,不走运
将我的 angularjs 从 1.2.13 升级到 1.2.15,没有运气

这是一个错误吗?有人给我提示吗?

【问题讨论】:

    标签: javascript angularjs angularjs-directive


    【解决方案1】:

    这与应用验证的顺序有关。似乎在某些时候,Angular 正在使用指令名称的字母顺序来排序它们的执行。所以smartFloat 出现在之后 required,而allEng 出现在之前

    通过更改指令执行的顺序,它们的解析器在$parsers 堆栈中获得不同的位置。所以在allEng 的情况下,你的指令(和解析器)在require 之前执行。如果输入是格式错误的数字会怎样?您的解析器返回undefined。这反过来会触发 required 解析器相信该值不存在 - 从而显示错误!

    您可以使用指令的名称来验证此行为。

    查看相关问题:Angularjs form validation order

    【讨论】:

      猜你喜欢
      • 2014-06-24
      • 2017-06-22
      • 2015-06-21
      • 1970-01-01
      • 2017-05-26
      • 2014-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多