[英]angularjs - custom directive name “smart-float”
我有一個簡單的,或者說很奇怪的問題:
在正式的角度教程中,有一個“自定義驗證”部分:
http://docs.angularjs.org/guide/forms
然后將代碼復制到Plunker:
http://plnkr.co/edit/6pcUJNUD3Zkyv5bx6OTe?p=preview
我要輸入的內容需要進行2個驗證:必填和智能浮動,目前,Plunker代碼可以正常工作。
但是,如果將指令名稱“ smart-float”更改為另一個名稱,例如“ all-eng”,則會出現一個小問題:
如果你輸入的東西不是一個浮點數,它顯示“需要”和“浮動”驗證錯誤都
我嘗試使用Chrome 33,Firefox 27,但沒有運氣
谷歌“ angularjs指令名稱限制”,沒有運氣
谷歌“ angularjs指令名稱為smart-float”,沒有運氣
將我的angularjs從1.2.13升級到1.2.15,不走運
這是錯誤嗎? 有人給我提示嗎?
這與驗證的應用順序有關。 似乎在某個時候,Angular正在使用指令名稱的字母順序來對它們的執行進行排序。 因此smartFloat
在 required
之后 ,而allEng
在 required
之前 。
通過更改指令執行的順序,其解析器在$parsers
堆棧中的位置不同。 因此,在allEng
情況下,您的指令(和解析器) 在require
之前執行。 如果輸入的數字格式錯誤,該怎么辦? 您的解析器返回undefined
。 這反過來觸發required
解析器以認為該值不存在-因此顯示錯誤!
您可以使用指令的名稱來驗證此行為。
檢查一個相關問題: Angularjs表單驗證順序
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.