Vue3 Formulare
In diesem Abschnitt stellen wir die Anwendung von Vue-Formularen vor.
Wir können die v-model-Direktive auf Formular<input>、<textarea>und<select>elementen verwenden, um eine bidirektionale Datenbindung zu erstellen.

v-model wählt automatisch die richtige Methode aus, um Elemente je nach Steuerelementtyp zu aktualisieren.
v-model ignoriert die Initialwerte der Attribute value, checked und selected aller Formularelemente und verwendet stattdessen die in der data-Option deklarierten Initialwerte.
Intern verwendet v-model für verschiedene Eingabeelemente unterschiedliche Eigenschaften und emittiert unterschiedliche Ereignisse:
- text- und textarea-Elemente verwenden
valueEigenschaft undinputEreignis; - checkbox und radio verwenden
checkedEigenschaft undchangeEreignis; - select-Felder werden
valueals Eigenschaft verwenden undchangeals Ereignis.
Eingabe
Das Beispiel zeigt, wie v-model verwendet wird, um eine bidirektionale Datenbindung für input- und textarea-Elemente zu implementieren:
Selbst ausprobieren »
<!-- 错误 -->
<textarea>{{ text }}</textarea>
<!-- 正确 -->
<textarea v-model="text"></textarea>
Kontrollkästchen
Wenn eine Checkbox einzeln ist, ist sie ein boolescher Wert; wenn mehrere, werden sie an dasselbe Array gebunden:
Kontrollkästchen
Das folgende Beispiel demonstriert die bidirektionale Datenbindung von Checkboxen:
Selbst ausprobieren »
Die Auswirkung des Ankreuzens der Kontrollkästchen im Beispiel wird unten angezeigt:
Optionsschaltflächen
Das folgende Beispiel demonstriert die bidirektionale Datenbindung von Radiobuttons:
Optionsschaltflächen
Selbst ausprobieren »
Nach der Auswahl wird der Effekt unten angezeigt:

Auswahlliste
Das folgende Beispiel demonstriert die bidirektionale Datenbindung einer Dropdown-Liste:
select
Selbst ausprobieren »
Beispiel auswählen, der Ausgabeeffekt wird unten angezeigt:

Wenn Mehrfachauswahl aktiviert ist, wird sie an ein Array gebunden:
select
Selbst ausprobieren »
Beispiel und Google auswählen:

Verwenden Siev-forSchleife, um Optionen auszugeben:
select
Selbst ausprobieren »
Beispiel auswählen:

Wertbindung
Für Radio-Buttons, Checkboxen und Select-Optionen ist der an v-model gebundene Wert normalerweise ein statischer String (bei Checkboxen kann er auch ein Boolean sein):
<input type="radio" v-model="picked" value="a" />
<!-- `toggle` ist true oder false -->
<input type="checkbox" v-model="toggle" />
<!-- Wenn die erste Option ausgewählt ist, ist `selected` der String "abc" -->
<select v-model="selected">
<option value="abc">ABC</option>
</select>
Aber manchmal möchten wir den Wert an eine dynamische Eigenschaft der aktuell aktiven Instanz binden. In diesem Fall kann v-bind verwendet werden. Darüber hinaus kann v-bind Eingabewerte an Nicht-String-Werte binden.
Kontrollkästchen:
<input type="checkbox" v-model="toggle" true-value="yes" false-value="no" /> ... // 选中时 vm.toggle === 'yes' // 取消选中 vm.toggle === 'no'
Radiobutton:
<input type="radio" v-model="pick" v-bind:value="a" /> // 当选中时 vm.pick === vm.a
Auswahloption:
<select v-model="selected">
<!-- 内联对象字面量 -->
<option :value="{ number: 123 }">123</option>
</select>
// 当被选中时
typeof vm.selected // => 'object'
vm.selected.number // => 123
Modifizierer
.lazy
Standardmäßig synchronisiert v-model den Eingabewert mit den Daten beim input-Ereignis, aber du kannst einen lazy-Modifier hinzufügen, um stattdessen beim change-Ereignis zu synchronisieren:
<!-- 在 "change" 而不是 "input" 事件中更新 --> <input v-model.lazy="msg" >
.number
Wenn du den Eingabewert des Benutzers automatisch in den Number-Typ konvertieren möchtest (wenn das Konvertierungsergebnis des ursprünglichen Werts NaN ist, wird der ursprüngliche Wert zurückgegeben), kannst du einen number-Modifier zu v-model hinzufügen, um den Eingabewert zu verarbeiten:
<input v-model.number="age" type="number">
Dies ist oft nützlich, weil bei type="number" der in HTML eingegebene Wert immer als String-Typ zurückgegeben wird.
.trim
Wenn du führende und nachgestellte Leerzeichen aus der Benutzereingabe automatisch herausfiltern möchtest, kannst du einen trim-Modifier zu v-model hinzufügen, um die Eingabe zu filtern:
<input v-model.trim="msg">Weitere Erweiterungen