Angular 1.4.x числовое поле с gettersetter не работает для десятичных чисел
У меня есть проблема в chrome(47), где при использовании ввода типа номер в сочетании с 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
1 ответ
То, что там происходит, это то, что когда вы объявляете getterSetter
функция, эта функция вызывается каждый раз, когда вы изменяете значение ввода.
Поэтому, когда вы пишете "12". функция вызывается, но это недопустимое число, поэтому она удаляет "." для предоставления действительного значения.
Попробуйте ввести "123", а затем добавить "." между числами, такими как "12.3", который работает!
редактировать
Я исправил ваш код, теперь он работает.
Попробуй это:
$scope.amount = function(newValue) {
return arguments.length ? ($scope._amount = newValue) : $scope._amount;
};
Вот раздвоенный планкр: http://plnkr.co/edit/xZtZLH5He4ZnjkqhFApY?p=preview