如果ng-model的值初始有效,则会显示该值,但是如果将值更改为无效的输入字段被清除,则模型将设置为null,并且您不能输入任何可能最初无效的内容.但是,如果您将有效值复制到显示的字段中.
我会很好,当模型值设置为null时,如果没有清除输入,然后防止更改,则为无效.
也有一种感觉,无论是什么导致这个问题也搞砸了ui面具.在没有角度确认指令的情况下也会发生同样的事情.
这是一个Plunker,我发现一个类似的问题,我修改显示我的问题:
http://plnkr.co/edit/dVsF7GFY65a30soLL5W8?p=preview
编辑
经过许多小时的研究,我找到了一个解决方案,虽然我不知道有什么不良副作用.
它通过将$modelValue设置为’undefined’,如果它失败了任何验证器,因为它通过$解析器和$formatters的方式,首先要确定角度.
我发现这个代码在Angular(第16331行)中被每个角度验证器调用:
function validate(ctrl,validatorName,validity,value){ ctrl.$setValidity(validatorName,validity); return validity ? value : undefined; }
我改变它返回’值’而不是’undefined’:
function validate(ctrl,value){ ctrl.$setValidity(validatorName,validity); return value; }
角度仍然正确设置验证.虽然我相信这不是最好的解决方案,甚至是一个好的解决方案.
我怀疑当Angular将$modelValue设置为’undefined’时,问题出现,然后Breeze看到模型已经更改,然后更新实体,然后更新模型,然后清除输入…等等…
我发现这对我的追求有帮助.也许这对你们中有一个比07 07年更了解的人更有帮助
解决方法
用法:
<input type="email" ng-model-options="{allowInvalid: true}" ng-model="my_breeze_model.email"/>
有关详细信息,请参阅此功能要求:https://github.com/angular/angular.js/issues/8290.
原文地址:https://www.jb51.cc/js/153915.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。