为什么Angular在有标准maxlength时提供ng-maxlength?

Den*_*Den 14 html javascript validation flawed-concept angularjs

HTML 从版本4.01开始提供标准的maxlength属性.Angular提供了ng-maxlength指令.

不同之处在于标准方法不允许输入超过最大值,而Angular的方法只会产生验证错误.

他们为什么决定包含这样的指令?这不是因为maxlength的动态数据绑定,因为行为不一致.这不是因为兼容性,因为它甚至可以在HTML 4.01中使用.我唯一的猜测是它提供了另一种验证范例,但听起来像是过度工程化.

小智 14

它不仅提供最大长度的验证,还增加了一个类ng-invalid-maxlength.所以当你把超出限制ng-invalid-maxlength类的东西放在那里时,你可以在那个班级编写自己的CSS.

所以在按键后如果验证失败,将同时调用css并在您的UI上反映出来.


fab*_*bbb 9

之前的答案可能在早期版本的角度中是正确的,但是从今天和Angular v1.5.5开始,它看起来与maxlength完全相同,ng-maxlength但也对类型文本的输入强制执行HTML输入maxlength属性.

例:

<input type="text" maxlength=5>
Run Code Online (Sandbox Code Playgroud)

maxlength 将在输入上强制执行最多5个字符,并将正确的角度验证类添加到输入中.

ngMaxlength只会强制执行验证.请参阅:https://docs.angularjs.org/api/ng/directive/ngMaxlength

建议: 好好用maxlength.