javascript - Angular : Cannot retrieve value of ng-model when ng-minlength is not satisifed

标签 javascript angularjs

给定:

<input type="password" ng-model="ctrl.fields.password" ng-minlength="8" />

{{ ctrl.fields.password.length }}

在达到验证要求的最小长度之前,不会显示任何内容。也就是说,如果密码的长度小于8,则模型的值为null。删除 ng-minlength 可以解决该问题。

这是非常意外的行为,因为字段的有效性应该与模型值的访问无关。

在 Angular 1.5 中是否有办法解决这个问题?我想在用户键入时向他们显示密码的长度,但由于该值在至少 8 个字符之前为 null,所以我不能。

最佳答案

这就是 Angular $validators 的工作方式:如果验证失败,值不会从 View 传递到模型,并且模型会重置。

这里很好地介绍了 Angular 内置验证的工作原理:

http://blog.thoughtram.io/angularjs/2015/01/11/exploring-angular-1.3-validators-pipeline.html

如果您不喜欢这个,angular-ui-validate是一个以无中断方式工作的好包(即模型始终更新,您决定如何处理验证结果)。

关于javascript - Angular : Cannot retrieve value of ng-model when ng-minlength is not satisifed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37599884/

相关文章:

javascript - 如何使用 $scope 和 ng-bind 检索 AngularJS 中的文本框条目

javascript - 防止空格按钮触发 jQuery 中的任何其他按钮单击

javascript - 两个用户通过 websocket 编辑输入的问题

javascript - Handlebars 在 HTML 属性中设置值以供 JS 使用

javascript - AngularJS 范围直到在 ui 中执行某些操作后才会更新,比如单击具有函数的对象

javascript - AngularJS:仅当复选框被选中时,将一个输入框的值复制到另一个输入框

javascript - PUT 方法出错。 AngularJS、NodeJS

javascript - 由于 <template> 在 HTML 中内联,Vue.js 2.0 在 Edge 中为空白

javascript - 无法从不同域中的页面访问 iframe 内容

javascript - 如何在 JavaScript 中将日期转换为本地等效日期