Löst ein Design-Pattern-Problem, das natürlich von einem MVM-Flow erwartet wird, der v-model.number einen String erzeugt, wenn er leer ist.
Wenn ich eine Zahl eingebe und dann den Text aus der Eingabe lösche, wird er im reaktiven Datenobjekt zu einer Zeichenfolge.
Dies ist sicherlich ein großes Usability- und Casting-Problem, und ich sehe nicht den Zweck, ein leeres String-Attribut im Modell beizubehalten. Es sollte aus dem Modell herausgespleißt werden, wenn es leer ist - genauso wie Sie neue Attribute für den Texteintrag erstellen, sollte es umgekehrt sein.
Dies ist sicherlich ein Designmusterproblem, das gelöst werden sollte und nicht jedes Mal auf Anwendungsebene implementiert werden muss. Es ist eine kleine Korrektur, die VueJS2 viel hinzufügen wird, und ich bin sicher, viele andere werden mir darin zustimmen!
Derzeit wenn die Eingabe leer ist
v-model.number="model.number"
Modell = {
Nummer: ""
}
Was es tun soll, wenn die Eingabe leer ist
v-model.number="model.number"
Modell = {
}
Ich denke, das aktuelle Verhalten ist das erwartete.
Da v-model
nur Syntaxzucker für v-bind:value
und v-on:input
, scheint es keine Szene zu machen, dass der input
Event-Handler eine Eigenschaft eines Objekts ( und möglicherweise die Reaktivität dieser Eigenschaft brechen).
Ich werde einen Workaround finden, danke :)
Wie Sie in #4742 gesehen haben, handelt es sich um das erwartete Verhalten. Der Grund dafür ist , dass der Benutzer erkennt, wenn kein Wert in der Eingabe angegeben ist . Andernfalls könnte vom Benutzer eine 0 eingegeben werden und auch eine leere Eingabe
@posva Nachdem Sie die Reaktivität von Vue besser verstanden haben, wäre die Rückgabe von null definitiv die bessere Option als die Rückgabe einer Zeichenfolge
Hilfreichster Kommentar
@posva Nachdem Sie die Reaktivität von Vue besser verstanden haben, wäre die Rückgabe von null definitiv die bessere Option als die Rückgabe einer Zeichenfolge