簡體   English   中英

angularjs-自定義指令名稱“ smart-float”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM