Vue.js
Representación condicional
Buscar..
Sintaxis
-
<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>// v-if con plantilla -
<element v-show="condition"></element>// v-show
Observaciones
Es muy importante recordar la diferencia entre v-if y v-show . Si bien sus usos son casi idénticos, un elemento vinculado a v-if solo se procesará en el DOM cuando su condición sea true por primera vez . Cuando se usa la directiva v-show , todos los elementos se representan en el DOM pero se ocultan usando el estilo de display si la condición es false .
Visión general
En Vue.js, la representación condicional se logra mediante el uso de un conjunto de directivas en los elementos de la plantilla.
v-if
El elemento se muestra normalmente cuando la condición es true . Cuando la condición es false , solo se produce una compilación parcial y el elemento no se representa en el DOM hasta que la condición se vuelve true .
v-else
No acepta una condición, sino que procesa el elemento si la condición v-if del elemento anterior es false . Solo se puede utilizar después de un elemento con la directiva v-if .
v-show
Sin embargo, se comporta de manera similar a v-if , sin embargo, el elemento siempre se representará en el DOM, incluso cuando la condición sea false . Si la condición es false , esta directiva simplemente establecerá el estilo de display del elemento en none .
v-if / v-else
Asumiendo que tenemos una instancia de Vue.js definida como:
var vm = new Vue({
el: '#example',
data: {
a: true,
b: false
}
});
Puede representar condicionalmente cualquier elemento html incluyendo la directiva v-if; el elemento que contiene v-if solo se procesará si la condición se evalúa como verdadera:
<!-- will render 'The condition is true' into the DOM -->
<div id="example">
<h1 v-if="a">The condition is true</h1>
</div>
El elemento <h1> se representará en este caso, porque la variable 'a' es verdadera. v-if puede usarse con cualquier expresión, propiedad computada o función que se evalúe como un valor booleano:
<div v-if="0 === 1"> false; won't render</div>
<div v-if="typeof(5) === 'number'"> true; will render</div>
Puede usar un elemento de template para agrupar varios elementos para una sola condición:
<!-- 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>
Al usar v-if , también tiene la opción de integrar una condición de contador con la directiva v-else . El contenido contenido dentro del elemento solo se mostrará si la condición del v-if anterior era falsa. Tenga en cuenta que esto significa que un elemento con v-else debe aparecer inmediatamente después de 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>
Al igual que con v-if, con v-else puede agrupar varios elementos html en 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-show
El uso de la directiva v-show es casi idéntico al de v-if . Las únicas diferencias son que v-show no admite la sintaxis <template> y no existe una condición "alternativa".
var vm = new Vue({
el: '#example',
data: {
a: true
}
});
El uso básico es el siguiente ...
<!-- will render 'Condition met' -->
<div id="example">
<h1 v-show="a">Condition met</h1>
</div>
Si bien v-show no admite la directiva v-else para definir condiciones "alternativas", esto se puede lograr al anular la anterior ...
<!-- 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>