带有gettersetter的Angular 1.4.x数字字段不适用于十进制数字

use*_*296 5 javascript numeric getter-setter angularjs

我在chrome(47)中遇到问题,当使用类型编号的输入结合ng-model-options ="{getterSetter:true}"时,不允许在字段中输入十进制数字.

使用getterSetter :(不工作)

<input ng-model="amount" ng-model-options="{ getterSetter: true }" step="0.01" type="number" >
Run Code Online (Sandbox Code Playgroud)

没有getterSetter :(有效)

<input ng-model="_amount" step="0.01" type="number">
Run Code Online (Sandbox Code Playgroud)

请参阅plunker进行演示 http://plnkr.co/edit/qu8UXCUtkJaFwjgGE1NX?p=preview

Ign*_*rde 1

发生的情况是,当您声明一个getterSetter函数时,每次修改输入值时都会调用该函数。

所以当你写“12”时。该函数正在被调用,但这不是一个有效的数字,因此它取出了“.”。用于提供有效值。

尝试输入“123”,然后添加“.”。在诸如“12.3”之类的数字之间有效!

编辑

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

尝试这个:

 $scope.amount = function(newValue) {
  return arguments.length ? ($scope._amount = newValue) : $scope._amount;
};
Run Code Online (Sandbox Code Playgroud)

这是一个分叉的plunkr:http://plnkr.co/edit/xZtZLH5He4ZnjkqhFApY ?p=preview