2014-04-03 45 views
0

我有一個簡單的,或非常奇怪的問題:angularjs - 定製指令名「智能浮動」

在角正式表格教程,有一節「自定義驗證」:
http://docs.angularjs.org/guide/forms

和我將代碼複製到Plunker:
http://plnkr.co/edit/6pcUJNUD3Zkyv5bx6OTe?p=preview

我要的是輸入需要做2驗證:需要和智能浮動, 就目前而言,Plunker代碼工作正常。

但是,如果你改變了指令名「智能浮動」到另外一個,像「全英」,把它轉化爲一個小問題:
如果你輸入的東西不是一個浮點數,它表明「需要「和‘浮動’驗證錯誤

我的Chrome 33,Firefox的27,沒有運氣
谷歌試圖‘angularjs指令名限制’,沒有運氣
谷歌‘angularjs指令名智能漂’,沒有運氣
將我的angularjs從1.2.13升級到1.2.15,沒有運氣

這是一個錯誤?任何人都給我一個提示?

回答

1

這與驗證應用的順序有關。看起來在某種程度上,Angular使用指令名稱的字母順序來命令它們的執行。所以smartFloat來到required,而allEng之前

通過改變指令執行順序,他們的解析器得到了$parsers棧的不同位置。所以在allEng情況下,你的指令(和解析器)被require之前執行。如果輸入的格式不正確,會發生什麼情況?你的解析器返回undefined。這反過來會觸發解析器相信該值不存在 - 從而顯示錯誤!

你可以用你的指令,以驗證這種行爲的名字玩。

查看有關問題:Angularjs form validation order