2015-12-23 3 views
5

Ich habe ein Problem in chrome (47) wo, wenn eine Eingabe des Typs Zahl in Kombination mit ng-model-options = "{getterSetter: true}" tut Sie können keine Dezimalzahlen in das Feld eingeben.Angular 1.4.x numerisches Feld mit gettersetter funktioniert nicht für Dezimalzahlen

Mit getterSetter: (nicht funktioniert)

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

Ohne getterSetter: (Werke)

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

siehe Plunker für eine Demo http://plnkr.co/edit/qu8UXCUtkJaFwjgGE1NX?p=preview

+1

Arbeiten für mich. (Chrome 46) –

Antwort

1

Was ist dort passiert, wenn Sie deklarieren Sie eine getterSetter Funktion, diese Funktion wird jedes Mal aufgerufen, wenn Sie den Wert der Eingabe ändern.

Also, wenn Sie "12." schreiben Die Funktion wird aufgerufen, aber das ist keine gültige Zahl, daher wird das "." um einen gültigen Wert zu liefern.

Versuchen Sie, "123" einzugeben und fügen Sie dann ein "." zwischen Zahlen wie "12.3" funktioniert das!

bearbeiten

ich Ihren Code festgelegt haben, jetzt funktioniert es.

Try this:

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

Hier ist ein Gabel plunkr: http://plnkr.co/edit/xZtZLH5He4ZnjkqhFApY?p=preview

+0

Wie Sie in der Konsole sehen können, geschieht dies nicht. wenn du drückst. der Getter wird gefeuert, aber der Setter wird nie ausgelöst. Auch die angegebene Antwort ist keine gültige Problemumgehung. – user3589296

+0

Ich habe damit keine Abhilfe geschaffen, ich habe Ihnen nur gezeigt, wie es funktioniert, nur ein Beispiel für Sie, um zu verstehen, warum dies geschah. Und wie ich bereits gesagt habe, wird undefined in der Konsole eingeloggt, weil "12." bedeutet nichts –

+1

Werfen Sie einen Blick auf die bearbeitete Antwort. Ich hoffe es hilft! –

Verwandte Themen