我有一个简单或非常奇怪的问题:
在 Angular 官方表单教程中,有一节“自定义验证”:
http://docs.angularjs.org/guide/forms
然后我将代码复制到 Plunker:
http://plnkr.co/edit/6pcUJNUD3Zkyv5bx6OTe?p=preview
我想要的是输入需要做 2 验证:required 和 smart-float, 目前,Plunker 代码工作正常。
但是如果你把指令名“smart-float”改成另一个,比如“all-eng”,就会出现一个小问题:
如果您输入的不是 float ,它会显示“必需”和“浮点”验证错误两者
我试过 Chrome 33、Firefox 27,没有成功
谷歌“angularjs 指令名称限制”,运气不好
谷歌“angularjs 指令名称 smart-float”,运气不好
将我的 angularjs 从 1.2.13 升级到 1.2.15,运气不好
这是一个错误吗?有人给我提示吗?
最佳答案
这与应用验证的顺序有关。似乎在某些时候,Angular 正在使用指令名称的字母顺序来命令它们的执行。所以 smartFloat
在之后 需要
,而 allEng
在之前。
通过改变指令执行的顺序,它们的解析器在$parsers
堆栈中获得不同的位置。所以在 allEng
情况下,您的指令(和解析器)在 require
之前执行。如果输入是格式错误的数字会怎样?您的解析器返回 undefined
。这反过来会触发 required
解析器认为该值不存在 - 从而显示错误!
您可以使用指令的名称来验证此行为。
关于javascript - angularjs - 自定义指令名称 "smart-float",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22840399/