Vue.js
Rendering condizionale
Ricerca…
Sintassi
-
<element v-if="condition"></element>// v-if -
<element v-if="condition"></element><element v-else="condition"></element>// v-if | v-else -
<template v-if="condition">...</template>// template v-if -
<element v-show="condition"></element>// v-show
Osservazioni
È molto importante ricordare la differenza tra v-if e v-show . Mentre i loro usi sono quasi identici, un elemento legato a v-if verrà visualizzato solo nel DOM quando la condizione è true per la prima volta . Quando si usa la direttiva v-show , tutti gli elementi sono resi nel DOM ma sono nascosti usando lo stile di display se la condizione è false !
Panoramica
In Vue.js, il rendering condizionale viene ottenuto utilizzando un insieme di direttive sugli elementi nel modello.
v-if
L'elemento viene visualizzato normalmente quando la condizione è true . Quando la condizione è false , si verifica solo una compilazione parziale e l'elemento non viene reso nel DOM finché la condizione non diventa true .
v-else
Non accetta una condizione, ma esegue il rendering dell'elemento se la condizione v-if dell'elemento precedente è false . Può essere utilizzato solo dopo un elemento con la direttiva v-if .
v-show
Si comporta in modo simile a v-if , tuttavia, l'elemento sarà sempre reso nel DOM, anche quando la condizione è false . Se la condizione è false , questa direttiva semplicemente imposta lo stile di display dell'elemento su none .
v-if / v-else
Supponendo che abbiamo un'istanza Vue.js definita come:
var vm = new Vue({
el: '#example',
data: {
a: true,
b: false
}
});
Puoi rendere condizionalmente qualsiasi elemento html includendo la direttiva v-if; l'elemento che contiene v-if eseguirà il rendering solo se la condizione restituisce true:
<!-- will render 'The condition is true' into the DOM -->
<div id="example">
<h1 v-if="a">The condition is true</h1>
</div>
L'elemento <h1> verrà visualizzato in questo caso, perché la variabile 'a' è vera. v-if può essere utilizzato con qualsiasi espressione, proprietà calcolata o funzione che restituisce un valore booleano:
<div v-if="0 === 1"> false; won't render</div>
<div v-if="typeof(5) === 'number'"> true; will render</div>
È possibile utilizzare un elemento template per raggruppare più elementi insieme per una singola condizione:
<!-- 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>
Quando si usa v-if , si ha anche la possibilità di integrare una condizione di contatore con la direttiva v-else . Il contenuto contenuto all'interno dell'elemento verrà visualizzato solo se la condizione della precedente v-if è falsa. Nota che questo significa che un elemento con v-else deve apparire immediatamente dopo un elemento con v-if.
<!-- will render only 'ELSE' -->
<div id="example">
<h1 v-if="b">IF</h1>
<h1 v-else="a">ELSE</h1>
</div>
Proprio come con v-if, con v-else puoi raggruppare più elementi html all'interno di un <template> :
<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-mostra
L'uso della direttiva v-show è quasi identico a quello di v-if . Le uniche differenze sono che v-show non supporta la sintassi <template> e non esiste una condizione "alternativa".
var vm = new Vue({
el: '#example',
data: {
a: true
}
});
L'uso di base è il seguente ...
<!-- will render 'Condition met' -->
<div id="example">
<h1 v-show="a">Condition met</h1>
</div>
Mentre v-show non supporta la direttiva v-else per definire condizioni "alternative", questo può essere ottenuto negando il precedente ...
<!-- 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>