Attributbindung

Abgeschlossen

Sie haben bereits erfahren, wie Daten auf einer Seite mithilfe von Handlebars ({{}}) angezeigt werden. Der Text auf der Seite ist jedoch nicht der einzige Bereich, der möglicherweise dynamisch aktualisiert werden muss.

Sie legen viele der Werte auf einer Seite fest, indem Sie entsprechende Attribute verwenden. Glücklicherweise ermöglicht Vue.js das Binden an Attribute mithilfe von Anweisungen.

Anweisungen

Anweisungen sind Attribute, die von Vue.js erkannt werden. Sie ermöglichen Ihnen das dynamische Setzen der Werte von HTML-Attributen. Alle Anweisungen beginnen mit v-.

v-Bind

Die Core-Anweisung ist v-bind. Sie ermöglicht Ihnen das Binden eines Datenwerts an ein Attribut. Sie können es verwenden, um den Namen einer Klasse, die Quelle für ein Bild oder einen Stil dynamisch zu setzenden.

Um diese Anweisung zu verwenden, platzieren Sie v-bind und einen Doppelpunkt (:) vor dem zu setzenden Attribut. Wenn Sie also das src-Attribut für ein Bild setzen möchten, verwenden Sie v-bind:src="value". Der Attributwert wird dann ähnlich wie bei Verwendung der {{ }}-Syntax ausgewertet.

Der folgende Code generiert das HTML-Element <img src="./media/sample.jpg">.

<div id="app">
    <img v-bind:src="imageSource" />
</div>

<script src="https://unpkg.com/vue@next"></script>
<script>
    Vue.createApp({
        data() {
            return {
                imageSource: './media/sample.jpg'
            }
        }
    }).mount('#app');
</script>

Die imageSource-Eigenschaft ist in der Vorlage verfügbar, da sie von der data()-Methode zurückgegeben wird. Anschließend wird sie an das src-Attribut des Image-Elements gebunden.

Hinweis

Sie müssen hierbei keinen Verweis auf das Objekt beibehalten, das Sie für Ihre App verwenden. Sie können jedoch sofort createApp aufrufen, gefolgt von mount, wie Sie bereits gesehen haben.

Binding-Kurzform

Sie haben gesehen, wie Sie die v-bind-Anweisung in ihrer Vue-App verwenden, um Daten an ein Attribut zu binden. Sie können diese Anweisung auch als Kurzform eingeben. Anstatt einzugeben v-bind:attribute, können Sie z. B. :attribute eingeben. Mit dieser Kurzform sparen Sie einige Zeichen.

Im Beispiel der gebundenen Bildquelle können Sie die Kurzform wie folgt verwenden.

<div id="app">
    <img v-bind:src="imageSource" />
</div>

Jetzt können Sie den folgenden Code eingeben.

<div id="app">
    <img :src="imageSource" />
</div>

Tipp

Die Verwendung der Kurzform :attribute stellt im Allgemeinen die bessere Vorgehensweise gegenüber der Verwendung von v-bind:attribute dar.

Klasse und Stil

Typische für ein HTML-Element festlegbare Attribute sind die Attribute class oder style. Zum Binden an diese Attribute können Sie v-bind:class und v-bind:style verwenden. In Kurzform können Sie dabei :class und :style verwenden.

Klassenobjekte

Nehmen wir an, Sie entwickeln eine Anwendung mit zwei Klassen: centered und active. In HTML verwenden Sie diese Klassen wie folgt.

<div class='centered active'>Hello, Vue!</div>

Dieses Beispiel ist jedoch statisch. Wenn Sie die Daten dynamisch ändern möchten, können Sie eine Bindung verwenden. Vue ermöglicht die Bindung nicht nur für Zeichenfolgen, sondern auch für Objekte.

So tauschen Sie den statischen Wert centered active gegen eine andere Eigenschaft aus:

<div id="app">
    <div :class="classObject">Hello, Vue!</div>
</div>

<script src="https://unpkg.com/vue@next"></script>
<script>
    Vue.createApp({
        data() {
            return {
                classObject: {
                    centered: true,
                    active: true
                }
            }
        }
    }).mount('#app');
</script>

Die Daten-Eigenschaft classObject verfügt über zwei Eigenschaften mit booleschen Werten. Diese booleschen Werte ermöglichen es Ihnen, bestimmte Klassen zu aktivieren oder zu deaktivieren. Wenn Sie centered auf false festlegen, würde <div class="active"> gerendet werden, da active die einzige Eigenschaft ist, die weiterhin true ist.

Hinweis

JavaScript-Benennungsregeln gelten für Klassen-Objekte. Wenn Ihr Klassenname beispielsweise einen Bindestrich verwendet, z. B. im Falle von center-text, müssen Sie den Namen beim Hinzufügen der Eigenschaft in Anführungszeichen ('center-text': true) setzen.

Stil-Objekte

Beim Festlegen von Stilen in CSS werden Auflistungen von Schlüssel-Wert-Paaren erstellt. Die Darstellung des Stils mithilfe eines JavaScript-Objekts ist relativ natürlich. In Vue.js können Sie Stilobjekte erstellen, um den Stil festzulegen.

Wenn Sie z. B. die Hintergrundfarbe (background-color) des Stils eines HTML-Elements festlegen möchten, können Sie den folgenden Code verwenden.

<div id="app">
    <div :style="styleObject">Hello, Vue!</div>
</div>

<script src="https://unpkg.com/vue@next"></script>
<script>
    Vue.createApp({
        data() {
            return {
                styleObject: {
                    'background-color': 'red'
                }
            }
        }
    }).mount('#app');
</script>