【问题标题】:Angular 1.4.x numeric field with gettersetter not working for decimal numbers带有gettersetter的Angular 1.4.x数字字段不适用于十进制数
【发布时间】:2015-12-23 16:39:31
【问题描述】:

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

使用 getterSetter:(不工作)

<input ng-model="amount" ng-model-options="{ getterSetter: true }" step="0.01" type="number" >

没有 getterSetter:(有效)

<input ng-model="_amount" step="0.01" type="number">

查看 plunker 的演示 http://plnkr.co/edit/qu8UXCUtkJaFwjgGE1NX?p=preview

【问题讨论】:

  • 为我工作。 (铬 46)

标签: javascript angularjs numeric getter-setter


【解决方案1】:

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

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

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

编辑

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

试试这个:

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

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

【讨论】:

  • 正如您在控制台中看到的那样,这并没有发生。当您按下 。 getter 被解雇,但它永远不会解雇 setter。提供的答案也不是有效的解决方法。
  • 我没有提供解决方法,我只是向您展示它是如何工作的,只是一个示例,让您了解为什么会发生这种情况。正如我已经告诉过你的,undefined 正在控制台中记录,因为“12”。没有任何意义
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 2016-11-26
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多