In der zweiten Lektion werden wir sprechen Informationen zur Attributbindung und zum Verbinden von in einer Vue-Instanz gespeicherten Daten mit Attributen von HTML-Elementen. → Erste Lektion
Der Zweck der Lektion
Hier sehen wir uns an, wie ein Bild angezeigt und der Attributtext mithilfe der Attributbindung festgelegt wird
alt
. Wir werden die relevanten Daten aus der Vue-Instanz entnehmen.
Anfangscode
Beginnen wir mit
index.html
dem <body>
folgenden HTML-Code, der sich in der Datei im Tag befindet :
<div id="app">
<div class="product">
<div class="product-image">
<img src="" />
</div>
<div class="product-info">
<h1>{{ product }}</h1>
</div>
</div>
</div>
Achten Sie auf das Tag
<div>
mit der Klasse product-image
. Es enthält das Element, <img>
an das wir die zur Anzeige des Bildes erforderlichen Daten dynamisch binden möchten.
Ein Element
<div>
mit einer Klasse wird product-info
verwendet, um den Namen eines Produkts anzuzeigen.
Hier ist das in der Datei enthaltene JavaScript
main.js
:
var app = new Vue({
el: '#app',
data: {
product: "Socks",
image: "./assets/vmSocks-green.jpg"
}
})
Beachten Sie, dass das Objekt
data
jetzt eine neue Eigenschaft hat, image
die den Pfad zum Bild enthält.
→ Das in diesem Tutorial verwendete CSS finden Sie hier .
Fügen Sie
index.html
dem Tag <head>
Folgendes hinzu , um den Stil zu verbinden :
<link rel="stylesheet" type="text/css" href="style.css"
Hier gehen wir von der Annahme aus, dass die Stildatei einen Namen hat
style.css
und im selben Ordner wie gespeichert ist index.html
.
Hier ist das Bild, das wir auf der Seite anzeigen werden.
Eine Aufgabe
Wir brauchen ein Bild, um auf der Seite angezeigt zu werden. Dabei wollen wir dieses Bild dynamisch manipulieren. Das heißt, wir müssen in der Lage sein, den Pfad zu dem in der Vue-Instanz gespeicherten Bild zu ändern und die Ergebnisse dieser Änderungen sofort auf der Seite anzuzeigen. Da es das
src
Elementattribut <img>
ist, das für das Bild verantwortlich ist, das das Element anzeigt, müssen wir einige Daten an dieses Attribut binden. Auf diese Weise können wir das Bild basierend auf den in der Vue-Instanz gespeicherten Daten dynamisch ändern.
Ein wichtiger Begriff: Datenbindung
Wenn wir über Datenbindung in Vue sprechen, ist der Punkt, dass die Stelle in der Vorlage, an der die Daten verwendet oder angezeigt werden, direkt mit der Datenquelle "verbunden" oder "verknüpft" ist, dh mit dem entsprechenden in der Instanz gespeicherten Objekt Vue.
Mit anderen Worten, die Datenquellenentität ist der Entität, in der diese Daten verwendet werden, der Datensenke zugeordnet. In unserem Fall ist die Datenquelle eine Vue-Instanz und die Senke ein Attribut des
src
Elements <img>
.
Die Lösung des Problems
Um einen Eigenschaftswert
image
von einem Datenobjekt an eine src
Tag- Eigenschaft zu binden <img>
, verwenden wir die Vue-Direktive v-bind
. Schreiben wir den Tag-Code <img>
aus der Datei neu index.html
:
<img v-bind:src="image" />
Wenn Vue während der Verarbeitung einer Seite eine solche Konstruktion sieht, ersetzt das Framework diese durch den folgenden HTML-Code:
<img src="./assets/vmSocks-green.jpg" />
Wenn alles richtig gemacht wurde, wird ein Bild auf der Seite angezeigt.
Das Bild der grünen Socken wird auf der Seite angezeigt.
Wenn Sie den Wert der
image
Objekteigenschaftdata
ändernsrc
,ändert sich der Attributwert entsprechend, wodurch ein neues Bild auf der Seite angezeigt wird.
Nehmen wir an, wir möchten die grünen Socken durch die blauen ersetzen. Da der Pfad zur Datei mit dem neuen Bild wie folgt aussieht
./assets/vmSocks-blue.jpg
(die Bilddatei finden Sie hier ), reicht es aus, den Eigenschaftsbeschreibungscodeimage
im Objektdata
in dieses Formular zu bringen:
image: "./assets/vmSocks-blue.jpg"
Dadurch wird das Bild der blauen Socken auf der Seite angezeigt.
Das Bild der blauen Socken wird auf der Seite angezeigt
Zusätzliche Anwendungsfälle für v-bind
Die Direktive
v-bind
kann nicht nur mit einem Attribut verwendet werden src
. Es kann uns auch helfen, das Bildattribut dynamisch anzupassen alt
.
Fügen wir dem Objekt eine
data
neue Eigenschaft mit folgenden Optionen hinzu altText
:
altText: "A pair of socks"
Binden wir die entsprechenden Daten an das Attribut
alt
und bringen den Elementcode <img>
in dieses Formular:
<img v-bind:src="image" v-bind:alt="altText" />
Hier wird wie im Fall des Attributs
src
das Konstrukt verwendet, das aus einem v-bind
Doppelpunkt und dem Attributnamen ( alt
) besteht.
Wenn sich nun die Eigenschaften der Vue-Instanz ändern
image
oder altText
, werden die <img>
aktualisierten Daten in den entsprechenden Elementattributen angezeigt . Dadurch wird die Verbindung zwischen den Attributen des Elements und den in der Vue-Instanz gespeicherten Daten nicht unterbrochen.
Diese Technik wird bei der Entwicklung von Vue-Anwendungen ständig angewendet. Aus diesem Grund gibt es eine abgekürzte Version des Konstruktionsprotokolls
v-bind:
. Es sieht aus wie :
. Wenn Sie diese Technik beim Schreiben von Tag-Code verwenden <img>
, erhalten Sie Folgendes:
<img :src="image" />
Es ist einfach und bequem. Diese Technik verbessert die Sauberkeit des Codes.
Werkstatt
Fügen Sie der Seite einen Link (Element
<a>
) mit Text hinzu More products like this
. data
Erstellen Sie im Objekt eine Eigenschaft, link
die den Link enthält https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=socks
. Binden Sie mithilfe einer Direktive v-bind
eine Eigenschaft link
an ein Attribut eines href
Elements <a>
.
→ Hier ist eine Vorlage, mit der Sie dieses Problem lösen können.
→ Hier ist die Lösung des Problems.
Ergebnis
Folgendes haben wir heute gelernt:
- Die in der Vue-Instanz gespeicherten Daten können an HTML-Attribute gebunden werden.
- Die Direktive wird verwendet, um Daten an Attribute zu binden
v-bind
. Die Abkürzung für diese Direktive ist Doppelpunkt (:
). - Ein Attributname, der auf einen Doppelpunkt folgt, gibt das Attribut an, an das die Daten gebunden sind.
- Als Wert des in Anführungszeichen angegebenen Attributs wird der Name des Schlüssels verwendet, anhand dessen Sie die mit dem Attribut verbundenen Daten finden können.
Wenn Sie an diesem Kurs teilnehmen, bitten wir Sie, uns mitzuteilen, in welcher Umgebung Sie Ihre Hausaufgaben machen.
→ Teil 1: Instanziieren von Vue
→ Teil 2: Attributbindung in Vue