在我的HTML标记中,我有一个类型为text的输入,它具有对十进制属性的双向绑定(使用ng-model)。在客户端使用Breeze查询获取包含此decimal属性的对象。我可以看到Breeze查询已经成功获取数据并且可以在文本输入中看到属性的初始值(即1.25)。如果我删除小数点并尝试再次键入它,它将不允许我这样做,此时我只能键入一个数字 - 实际上我最终得到的是一个整数值。
任何人都可以告诉我,Angular或Breeze是否在幕后做了一些限制文本输入的内容,只能接受数字而不是任何文本。我已经在浏览器中检查了有问题的输入元素,看看是否有任何额外的“闩上”可能导致了这一点,但没有任何事情跳出来。 “修复”或解决方法是将输入类型更改为数字并将步骤属性设置为“任何”,但我仍然希望了解原因,因此将非常感谢任何帮助。
由于
答案 0 :(得分:1)
我遇到了同样的问题,我认为问题在于,由于双向绑定,预计该值在任何给定时刻都有效。显然是“1”不是有效的数字所以它不喜欢它。如果键入“125”,然后返回并插入“。”它将接受“1.25”。
我目前的解决方案是使用去抖动更新:
<input type="{{type}}" ng-model="ngModel" ng-model-options="{ updateOn: 'default blur', debounce: { default: 1000, blur: 0 } }">
如果你根本不想要超时,你可以使用: ng-model-options =“{updateOn:'blur'}
有关此内容的更多信息:https://docs.angularjs.org/api/ng/directive/ngModelOptions
答案 1 :(得分:0)
根据您的本地化设置,数字输入字段可能只接受数字和逗号(不是小数点)。由于验证是在unser输入上完成的,因此angular能够使用小数点设置值而不会失败。
顺便说一句,为什么你会想要使用微风,当AngularJS有你需要把你的字段链接到模型时?