2014-02-18 36 views
5

如果在表单加载时输入的文本字段的值超过了ng-maxlength(输入仍为$ pristine,而不是$ dirty),则输入字段会误导空白,而ng模型仍有数据。为什么当ng-maxlength在初始化时被超过时,angularjs会将输入字段填空?

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

我想输入呈现相同的数据是什么模式了,为什么它显示我一个空白?

这是一个错误?或有意的行为?

+0

这似乎是angularjs的默认行为,因为ng-invalid标签已经发出。 – Chandermani

+0

如果我想向用户显示现有值,以便他们能够确定长度,该怎么办? – Homan

+0

看到这个讨论https://github.com/angular/angular.js/issues/1412 – Chandermani

回答

2

这是因为在超过ng-maxlength标准后,角度js将输入视为未定义。 您可以使用ng-maxlength的html maxlength属性。 Html maxlength会将输入值限制为仅限于此限制,ng-model将仅为有限长度存储输入值。您可以使用ng-maxlength在超出限制时显示错误。

+0

如果你从简短的东西开始并尝试超过最大长度,那么它就可以工作。但是,如果您的表单预填充了已超过最大长度的字符串,并且您试图缩短字符串,则模型数据将变为空白,直至验证通过。我想知道是否有办法阻止未定义的行为并保持与视图值相同的值? – Homan

+0

如果表单以已经超过最大长度的填充字符串开始,那么您应该尝试检查控制器本身的最大长度。 – Anita

相关问题