VueJS - Binding: Ein Anfängerguide

Hallo da, zukünftiger Vue.js-Superstar! Ich freue mich sehr, dein Guide auf dieser aufregenden Reise in die Welt der Vue.js-Bindung zu sein. Als jemand, der seit Jahren Programmierung unterrichtet, kann ich dir sagen, dass Binding wie das Geheimrezept ist, das Vue.js so lecker macht. Also, rollen wir die Ärmel hoch und tauchen ein!

VueJS - Binding

Was ist Binding in Vue.js?

Bevor wir ins Detail gehen, lassen sich klären, was Binding bedeutet. In Vue.js ist Binding die Art und Weise, wie wir unsere Daten mit dem DOM (Document Object Model) verbinden. Es ist so, als ob wir eine magische Verbindung zwischen deinem JavaScript-Code und dem, was auf dem Bildschirm erscheint, herstellen. Cool, oder?

Binding von HTML-Klassen

Stell dir vor, du bereitest dich für eine Party vor. Du könntest verschiedene Outfits basierend auf dem Anlass wählen, oder? Das.Binding von HTML-Klassen in Vue.js funktioniert ähnlich. Wir können das Erscheinungsbild unserer Elemente basierend auf unseren Daten dynamisch ändern.

Grundlegendes Class Binding

Lassen sie uns mit einem einfachen Beispiel beginnen:

<div id="app">
<p :class="{ active: isActive }">Bin ich aktiv?</p>
</div>

<script>
new Vue({
el: '#app',
data: {
isActive: true
}
})
</script>

In diesem Beispiel binden wir die 'active' Klasse an unseren Absatz basierend auf der isActive Daten Eigenschaft. Wenn isActive wahr ist, wird der Absatz die 'active' Klasse haben. Wenn es falsch ist, nicht.

Mehrere Klassen

Was aber, wenn wir mehrere Klassen jonglieren möchten? Kein Problem! Vue.js hat uns abgedeckt:

<div id="app">
<p :class="{ active: isActive, 'text-danger': hasError }">
Mehrfachklasse-Binding
</p>
</div>

<script>
new Vue({
el: '#app',
data: {
isActive: true,
hasError: false
}
})
</script>

Hier binden wir zwei Klassen: 'active' und 'text-danger'. Der Absatz wird die 'active' Klasse haben, aber nicht 'text-danger',除非 wir hasError auf true ändern.

Array-Syntax

Wir können auch eine Liste verwenden, um Klassen zu binden. Es ist, als ob man eine Garderobe voller Klassen zur Auswahl hat:

<div id="app">
<p :class="[activeClass, errorClass]">Array-Syntax ist cool!</p>
</div>

<script>
new Vue({
el: '#app',
data: {
activeClass: 'active',
errorClass: 'text-danger'
}
})
</script>

In diesem Fall werden beide Klassen 'active' und 'text-danger' auf den Absatz angewendet.

Binding von Inline-Stilen

Nun, lassen sie uns über Inline-Stile sprechen. Es ist, als ob man seinen Elementen eine Überarbeitung auf die Schnelle verpasst!

Objekt-Syntax

Wir können Inline-Stile mit einem Objekt binden:

<div id="app">
<p :style="{ color: textColor, fontSize: fontSize + 'px' }">
Styling!
</p>
</div>

<script>
new Vue({
el: '#app',
data: {
textColor: 'rot',
fontSize: 20
}
})
</script>

Dies setzt die Farbe auf rot und die Schriftgröße auf 20px. Beachte, wie wir CamelCase (fontSize) oder KebabCase ('font-size') für die Stil-Eigenschaften verwenden können.

Array-Syntax

Wir können auch ein Array von Stil-Objekten verwenden:

<div id="app">
<p :style="[baseStyles, overridingStyles]">Array von Stilen</p>
</div>

<script>
new Vue({
el: '#app',
data: {
baseStyles: {
color: 'blau',
fontSize: '20px'
},
overridingStyles: {
fontWeight: 'fett'
}
}
})
</script>

Dies ermöglicht es uns, mehrere Stil-Objekte anzuwenden, wobei spätere Objekte im Array frühere überschreiben, falls es zu Konflikten kommt.

Formular-Eingabe-Bindungen

Formular-Eingabe-Bindungen sind, wo Vue.js wirklich glänzt. Es ist, als ob man eine direkte Telefonleitung zwischen seinen Formularfeldern und seinen Daten hat!

Text-Eingabe

Lassen sie uns mit einer einfachen Text-Eingabe beginnen:

<div id="app">
<input v-model="message" placeholder="Bearbeite mich">
<p>Nachricht ist: {{ message }}</p>
</div>

<script>
new Vue({
el: '#app',
data: {
message: ''
}
})
</script>

Die v-model Direktive erstellt eine bidirektionale Bindung zwischen der Eingabe und der message Daten-Eigenschaft. Jegliche Änderungen in der Eingabe werden sofort message aktualisieren, und umgekehrt.

Checkbox

Checkboxen sind wie kleine Ein/Aus-Schalter. Hier ist, wie wir sie binden:

<div id="app">
<input type="checkbox" id="checkbox" v-model="checked">
<label for="checkbox">{{ checked }}</label>
</div>

<script>
new Vue({
el: '#app',
data: {
checked: false
}
})
</script>

Die checked Eigenschaft wird wahr sein, wenn die Checkbox angekreuzt ist, und falsch, wenn nicht.

Radiobuttons

Radiobuttons sind wie Multiple-Choice-Fragen. Nur einer kann gleichzeitig ausgewählt werden:

<div id="app">
<input type="radio" id="one" value="Eins" v-model="picked">
<label for="one">Eins</label>
<br>
<input type="radio" id="two" value="Zwei" v-model="picked">
<label for="two">Zwei</label>
<br>
<span Gewählt: {{ picked }}</span>
</div>

<script>
new Vue({
el: '#app',
data: {
picked: ''
}
})
</script>

Die picked Eigenschaft wird auf den Wert des ausgewählten Radiobuttons gesetzt.

Auswahldropdown

Schließlich schauen wir uns Dropdown-Menüs an:

<div id="app">
<select v-model="selected">
<option disabled value="">Bitte eine Option auswählen</option>
<option>A</option>
<option>B</option>
<option>C</option>
</select>
<span Gewählt: {{ selected }}</span>
</div>

<script>
new Vue({
el: '#app',
data: {
selected: ''
}
})
</script>

Die selected Eigenschaft wird auf den Wert der ausgewählten Option gesetzt.

Zusammenfassung der Binding-Methoden

Hier ist eine schnelle Referenztabelle der Binding-Methoden, die wir behandelt haben:

Binding-Typ Syntax Beschreibung
Klasse (Objekt) :class="{ className: bedingung }" applies class based on condition
Klasse (Array) :class="[class1, class2]" applies multiple classes
Stil (Objekt) :style="{ eigenschaft: wert }" applies inline styles
Stil (Array) :style="[styleObject1, styleObject2]" applies multiple style objects
Formular-Eingabe v-model="dataProperty" bidirectional binding for form inputs

Und das war's! Du hast gerade deine ersten Schritte in die wunderbare Welt der Vue.js-Bindung unternommen. Denke daran, Übung macht den Meister, also habe keine Angst, mit diesen Konzepten zu experimentieren. Bereit zum Coden!

Credits: Image by storyset