3

在我的 HTML 标记中,我有一个 text 类型的输入,它具有与十进制属性的双向绑定(使用 ng-model)。使用客户端上的 Breeze 查询获取包含此十进制属性的对象。我可以看到 Breeze 查询已成功获取数据,并且可以在文本输入中看到属性的初始值(即 1.25)。如果我删除小数点并尝试再次输入它,它将不允许我这样做,此时我只能输入一个数字 - 实际上我最终得到的是一个整数值。

谁能告诉我 Angular 或 Breeze 是否在幕后做某事,将文本输入限制为只能接受数字而不是任何文本。我已经在浏览器中检查了有问题的输入元素,看看是否有任何额外的“螺栓固定”可能导致这种情况,但没有任何东西跳出来。“修复”或解决方法是将输入类型更改为数字并将步骤属性设置为“任何”,但我仍然想了解原因,因此非常感谢任何帮助。

谢谢

4

2 回答 2

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

于 2016-01-23T10:44:12.713 回答
0

根据您的本地化设置,数字输入字段可能只接受数字和逗号(不接受小数点)。由于验证是在 unser 输入上完成的,因此 angular 能够使用小数点设置值而不会失败。

顺便说一句,当 AngularJS 拥有将字段链接到模型所需的一切时,为什么还要使用微风呢?

于 2013-06-26T09:55:43.580 回答