2015-12-23 26 views
5

Ho un problema in chrome (47) dove quando si utilizza un numero di tipo in combinazione con ng-model-options = "{getterSetter: true}" non non ti permette di inserire numeri decimali nel campo.Campo numerico 1.4.x angolare con gettersetter che non funziona per i numeri decimali

Con getterSetter: (non funzionante)

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

Senza getterSetter: (opere)

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

vedere plunker per una demo http://plnkr.co/edit/qu8UXCUtkJaFwjgGE1NX?p=preview

+1

funziona per me. (Chrome 46) –

risposta

1

Quello che sta accadendo è che quando si dichiarare una funzione getterSetter, questa funzione viene chiamata ogni volta che si modifica il valore dell'input.

Quindi quando si scrive "12." la funzione viene chiamata, ma non è un numero valido, quindi elimina "". per fornire un valore valido.

Provare a digitare "123" e quindi aggiungere un "." tra numeri come "12.3" che funziona!

Modifica

ho fissato il codice, ora funziona.

Prova questo:

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

Ecco un plunkr biforcuta: http://plnkr.co/edit/xZtZLH5He4ZnjkqhFApY?p=preview

+0

Come si può vedere nella console questo non sta accadendo. quando premi. il getter viene licenziato ma non spara mai al setter. anche la risposta fornita non è una soluzione valida. – user3589296

+0

Non stavo fornendo una soluzione alternativa, ti stavo solo mostrando come funzionava, solo un esempio per te per capire perché stava succedendo. E come ti ho già detto, undefined viene registrato nella console perché "12." significa niente –

+1

Dai un'occhiata alla risposta modificata. Spero che sia d'aiuto! –

Problemi correlati