簡體   English   中英

角度的奇怪行為需要TextBox

[英]Weird Behavior Of Angular With TextBox Required

我有2個文本框,一個是必需的,另一個是不需要的。

如果我們在所需的文本框中添加文本,說“ABC”,然后刪除內容,則ng-model設置為undefined

如果我們將文本添加到非必填字段並刪除內容,則ng-model不會清空字符串""

以下是我上面解釋過的行為。 請使用控制台查看結果。

http://plnkr.co/edit/XgQBfcyRF3OwG1qC0gXb?p=preview

為什么在兩者之間設置ng-model有區別?

似乎是由設計,與驗證表單值的一致行為做。

在文檔中沒有任何關於此行為的內容,AFAIK ..這里隱含着 - > https://github.com/angular/angular.js/blob/master/src/ng/directive/input.js#L1045

使用angularJS驗證,如果允許在字段上輸入的值,則該值將成為模型的值(與任何其他綁定值的行為一樣)。 如果不是,則唯一的一致方法是將值設置為undefined(因為字段中沒有允許的值)。 另外兩個選項是保持它的最后一個有效值,或者保持綁定錯誤的值,只觸發無效字段和表單的標志。 這兩個解決方案都很糟糕 - 留下最后一個值可能是不需要的(如果你使用的值忽略了表單的狀態,它會導致錯誤)並且允許無效值是一個可怕的罪惡;)(你不能' t信任驗證服務,以幫助防止錯誤使用錯誤的類型)

雖然看起來很奇怪甚至不一致,但事實並非如此。 我稍微修改了你的plunkr以驗證一個數字,我相信它更清楚為什么這樣: http ://plnkr.co/edit/9gJmblUn9MUUeFt5lWJZ?p = preview。

所以,實際上沒有區別 - 只有在你的第二個輸入中,空字符串被認為是有效的,因此該字段的可接受值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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