Vue.js
Bedingtes Rendern
Suche…
Syntax
-
<element v-if="condition"></element>
// v-if -
<element v-if="condition"></element><element v-else="condition"></element>
// V-if | v-sonst -
<template v-if="condition">...</template>
// Vorlage für v-if -
<element v-show="condition"></element>
// V-Show
Bemerkungen
Es ist sehr wichtig, sich an den Unterschied zwischen v-if
und v-show
zu erinnern. Während ihre Verwendung fast identisch ist, ein Element gebunden v-if
nur in das DOM machen wird , wenn es Bedingung ist true
zum ersten Mal. Bei Verwendung der v-show
- Richtlinie, werden alle Elemente in das DOM gemacht , sondern mit dem versteckten display
Stil , wenn die Bedingung ist false
!
Überblick
In Vue.js wird das bedingte Rendern durch Verwendung einer Reihe von Anweisungen für Elemente in der Vorlage erreicht.
v-if
Element zeigt normalerweise , wenn die Bedingung ist true
. Wenn die Bedingung false
, wird nur eine teilweise Kompilierung durchgeführt und das Element wird nicht in das DOM gerendert, bis die Bedingung true
.
v-else
Akzeptiert keine Bedingung, sondern rendert das Element, wenn die v-if
Bedingung des vorherigen Elements false
. Kann nur nach einem Element mit der v-if
Direktive verwendet werden.
v-show
Verhält sich ähnlich wie v-if
das Element jedoch immer in das DOM gerendert wird, auch wenn die Bedingung false
. Wenn die Bedingung false
, setzt diese Direktive einfach den display
des Elements auf none
.
v-if / v-else
Angenommen, wir haben eine Vue.js
Instanz definiert als:
var vm = new Vue({
el: '#example',
data: {
a: true,
b: false
}
});
Sie können jedes HTML-Element bedingt darstellen, indem Sie die V-if-Direktive einfügen. Das Element, das v-if enthält, wird nur gerendert, wenn die Bedingung als wahr ausgewertet wird:
<!-- will render 'The condition is true' into the DOM -->
<div id="example">
<h1 v-if="a">The condition is true</h1>
</div>
Das Element <h1>
wird in diesem Fall gerendert, da die Variable 'a' wahr ist. v-if kann mit einem beliebigen Ausdruck, einer berechneten Eigenschaft oder einer Funktion verwendet werden, die einen booleschen Wert ergibt:
<div v-if="0 === 1"> false; won't render</div>
<div v-if="typeof(5) === 'number'"> true; will render</div>
Sie können ein template
verwenden, um mehrere Elemente für eine einzelne Bedingung zusammenzufassen:
<!-- in this case, nothing will be rendered except for the containing 'div' -->
<div id="example">
<template v-if="b">
<h1>Heading</h1>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</template>
</div>
Bei Verwendung von v-if
haben Sie auch die Möglichkeit, eine Zählerbedingung in die v-else
Direktive zu integrieren. Der Inhalt des Elements wird nur angezeigt, wenn die Bedingung des vorherigen v-if falsch war. Beachten Sie, dass dies bedeutet, dass ein Element mit v-else unmittelbar nach einem Element mit v-if erscheinen muss.
<!-- will render only 'ELSE' -->
<div id="example">
<h1 v-if="b">IF</h1>
<h1 v-else="a">ELSE</h1>
</div>
Genau wie bei v-if können Sie mit v-else mehrere HTML-Elemente innerhalb einer <template>
gruppieren:
<div v-if="'a' === 'b'"> This will never be rendered. </div>
<template v-else>
<ul>
<li> You can also use templates with v-else. </li>
<li> All of the content within the template </li>
<li> will be rendered. </li>
</ul>
</template>
v-show
Die Verwendung der v-show
Direktive ist fast identisch mit der von v-if
. Der einzige Unterschied besteht darin, dass v-show
die <template>
-Syntax nicht unterstützt und es keine "alternative" Bedingung gibt.
var vm = new Vue({
el: '#example',
data: {
a: true
}
});
Die grundlegende Verwendung ist wie folgt ...
<!-- will render 'Condition met' -->
<div id="example">
<h1 v-show="a">Condition met</h1>
</div>
Während v-show
die v-else
Direktive zur Definition von "alternativen" Bedingungen nicht unterstützt, kann dies durch Negieren der vorherigen Bedingung erreicht werden.
<!-- will render 'This is shown' -->
<div id="example">
<h1 v-show="!a">This is hidden</h1>
<h1 v-show="a">This is shown</h1>
</div>