Javascript 角度1.4.x数值字段,gettersetter不适用于十进制数

Javascript 角度1.4.x数值字段,gettersetter不适用于十进制数,javascript,angularjs,numeric,getter-setter,Javascript,Angularjs,Numeric,Getter Setter,我在chrome(47)中遇到了一个问题,当将number类型的输入与ng model options=“{getterSetter:true}”结合使用时,不允许您在字段中输入十进制数 使用getterSetter:(不工作) 没有getterSetter:(工作) 请参见plunker的演示 当您声明一个getterSetter函数时,每次修改输入值时都会调用该函数 所以当你写“12”时,函数被调用,但这不是一个有效的数字,所以它去掉了“.”来提供一个有效的值 尝试键入“123”,然

我在chrome(47)中遇到了一个问题,当将number类型的输入与ng model options=“{getterSetter:true}”结合使用时,不允许您在字段中输入十进制数

使用getterSetter:(不工作)


没有getterSetter:(工作)


请参见plunker的演示

当您声明一个
getterSetter
函数时,每次修改输入值时都会调用该函数

所以当你写“12”时,函数被调用,但这不是一个有效的数字,所以它去掉了“.”来提供一个有效的值

尝试键入“123”,然后在数字之间添加“.”,如“12.3”,这样做有效

编辑

我已经修复了你的代码,现在它可以工作了

试试这个:

 $scope.amount = function(newValue) {
  return arguments.length ? ($scope._amount = newValue) : $scope._amount;
};

这是一个叉形的扑救:

对我有用。(Chrome 46)正如您在控制台中看到的,这种情况不会发生。当你按下按钮。getter被激发,但它从未激发setter。另外,提供的答案不是有效的解决方法。我没有提供解决方法,我只是向您展示它是如何工作的,只是一个示例,让您了解为什么会发生这种情况。正如我已经告诉过你的,undefined被记录在控制台中,因为“12.”没有任何意义
<input ng-model="_amount" step="0.01" type="number">
 $scope.amount = function(newValue) {
  return arguments.length ? ($scope._amount = newValue) : $scope._amount;
};