Vue 2 podstawy - pętle, warunki
Kolejny artykuł na temat podstaw Vue 2. Opiszę pętle i warunki. Spójrzmy na poniższy kod. Pokazuje on jak przeiterować się przez tablicę. W vue używamy atrybutu v-for.
<div id="root">
<ul>
<li v-for="name in names">
{{ name }}
</li>
</ul>
</div>
Natomiast w javascript:
let app = new Vue({
el: '#root',
data: {
names: ['Joe', 'Mary', 'James', 'Jack']
}
});
Dodamy teraz przycisk, którym będziemy dodawać elementy do naszej listy.
<ul>
<li v-for="name in names">
{{ name }}
</li>
</ul>
<input type="text" v-model="newName">
<button @click="addName">Add name</button>
Kod js obsługujący dodawanie do tablicy.
let app = new Vue({
el: '#root',
data: {
newName: '',
names: ['Joe', 'Mary', 'James', 'Jack']
},
methods: {
addName() {
this.names.push(this.newName);
this.newName = '';
}
}
});
Jak widać powyżej po kliknięciu na button wywołuje się metoda addName. Dzięki
połączeniu danych z pola tekstowego za pomocą v-model
dodajemy nowe wpisane imię do naszej tablicy z imionami (names).
Wszystko się dynamicznie aktualizuje dzięki Vue.
Tak jak w każdym języku programowania w vue mamy do dyspozycji instrukcje warunkowe.
Najlepiej pokażę to na przykładach.
Przykład v-if v-else:
<h1 v-if="zm">widoczne jesli zm true</h1> <h1 v-else>zm false</h1>Jeśli zm będzie true pokaże się pierwszy tag h1 w przeciwnym wypadku drugi. Ponieważ v-if jest dyrektywą, musi być dołączona do jednego elementu. Ale co, jeśli chcemy przełączyć więcej niż jeden element? W tym przypadku możemy użyć v-if na elemencie template, który służy jako niewidzialne opakowanie. Ostatecznie renderowany wynik nie będzie zawierał elementu template.
<template v-if="ok"> <h1>Title</h1> <p>Paragraph 1</p> <p>Paragraph 2</p> </template>Istnieje również konstrukcja v-else-if.
<div v-if="type === 'Lorem'"> Lorem </div> <div v-else-if="type === 'Ipsum'"> Ipsum </div> <div v-else-if="type === 'Dolor'"> Dolor </div> <div v-else> Coś innego </div>
