2016-07-20 7 views
1

Wenn ich getterSetter mit Formularüberprüfung verwende, dann kann ich nichts ungültiges in einen Eingang eingeben. z.B.Kann ungültigen Ansichtswert nicht geben, wenn ich ng-model-optios benutze GetterSetter

HTML

<input type="number" ng-model-options="{getterSetter: true}" ng-model="ctrl.myVal" min="10"> 

JS

this.myVal = function(value) { 
    if (value !== undefined) { 
    this.actualVal = value; 
    } else { 
    return this.actualVal; 
    } 
}; 

https://plnkr.co/edit/dUPXiD1elGfqZSf9x9Bk?p=preview

Mit diesem Eingang ich keine Nummer eingeben kann, wie es wäre weniger als 10.

ich zu bekommen versuchen das gleiche Verhalten bekomme ich ohne die getterSetter. Nämlich: Ein Benutzer kann jede ungültige Eingabe in der Ansicht eingeben, aber das Modell wird nur dann gesetzt, wenn die Eingabe gültig ist.

Wer weiß eine Problemumgehung Ich kann Benutzer Formularvalidierung mit einem getterSetter arbeiten oder kann jemand erklären, warum dies geschieht?

Antwort

2

Dies passiert, weil die value an Ihren Setter übergeben undefined sein kann, Tricking Ihre GetterSetter in die Handhabung eines "Setter" Anruf als "Getter" Anruf.

Ändern der Zustand von value !== undefined zu arguments.length wird Ihr Problem beheben: Updated plnkr