当有标准的 maxlength 时,为啥 Angular 会提供 ng-maxlength?
Posted
技术标签:
【中文标题】当有标准的 maxlength 时,为啥 Angular 会提供 ng-maxlength?【英文标题】:Why does Angular provide ng-maxlength when there is a standard maxlength?当有标准的 maxlength 时,为什么 Angular 会提供 ng-maxlength? 【发布时间】:2015-01-10 12:38:40 【问题描述】:html provides 自 4.01 版以来的标准 maxlength 属性。 Angular 提供了一个ng-maxlength 指令。
不同之处在于标准方法不允许输入超过最大值,而 Angular 的方法只会产生验证错误。
他们为什么决定加入这样的指令?这不是因为 maxlength 的动态数据绑定,因为行为不一致。这不是因为兼容性,因为它甚至在 HTML 4.01 中也可用。我唯一的猜测是它提供了另一种验证范式,但这听起来像是过度设计。
【问题讨论】:
正如你所说 -maxlength
定义了 HTML 元素的属性。 ng-maxlength
定义了如何验证模型。也许它是过度设计的,也许不是。我想这很随意。
你可能会问同样的问题,为什么要使用ng-validate
来检查某个东西是否是数字,或者只使用<input type="number">
(暂时忘记兼容性问题)
@BarthZalewski - 公平点:programmers.stackexchange.com/questions/262659/…
这很好,@Den
【参考方案1】:
它不仅提供最大长度验证,还添加了一个类ng-invalid-maxlength
。
因此,当您放置超出限制的任何内容时,ng-invalid-maxlength
类将放在那里
在该课程中,您可以编写自己的 css。
因此,如果验证失败,按下按键后,css 将同时被调用并反映在您的 UI 上。
【讨论】:
“使用普通 maxlength 属性时也会添加此指令”...所以这个答案更正确。【参考方案2】:以前的答案在早期版本的 Angular 中可能是正确的,但截至今天和 Angular v1.5.5,看起来 maxlength
与 ng-maxlength
做的事情完全相同,但也对输入强制执行 HTML 输入 maxlength 属性文本类型。
示例:
<input type="text" maxlength=5>
maxlength
将强制输入最多 5 个字符,并将正确的角度验证类添加到输入。
而ngMaxlength
只会强制执行验证。见:https://docs.angularjs.org/api/ng/directive/ngMaxlength
建议:
只需使用maxlength
。
【讨论】:
以上是关于当有标准的 maxlength 时,为啥 Angular 会提供 ng-maxlength?的主要内容,如果未能解决你的问题,请参考以下文章
当有前导空格时,为啥 Pandas series.str.contains 方法无法检测到匹配?
当有填充的tbody时,为啥jQuery DataTable会显示“表中没有可用数据”
当有 SOCKS 代理时,为啥我的脚本遵循 /etc/hosts 而浏览器不遵循?
为啥 <input type="number" maxlength="3"> 在 Safari 中不起作用?