Vue.js – wprowadzenie. Dyrektywy warunkowe

Vue.js posiada wiele ciekawych mechanizmów, niektóre bardziej rozbudowane, inne dość proste. Dziś zajmę się reprezentami z tych drugich. Pomimo swej prostoty mechanizmy te są jednak bardzo przydatne. Czasem wystarczą w zupełności aby stworzyć prostą aplikację webową.

Mowa tu o dyrektywach warunkowych. Są one wbudowane w logikę Vue i trzeba wiedzieć jak z nich korzystać. Wiem, że pokazywałem już niektóre z nich w przykładowym kodzie, przy okazji tworzenia mojej aplikacji Vue. Jest to jednak temat, który warto mieć uporządkowany. Stąd dzisiejszy post.

Vue js dyrektywy warunkowe

Zaczynamy od takiego podstawowego elementu body, w przydkładowym dokumencie html:

Dołączam do niego kod Vue z CDNu oraz plik ze skryptem app.js. Plik ten jest póki co pusty. Pierwszą podstawową logikę przedstawić mogę nie używając zewnętrznego kodu. Element, w którym dodaję moje przykłady to div o ID vueApp.

Dyrektywa v-show

Pierwszą dyrektywą, którą dziś omóię jest v-show. Działa ona bardzo podobnie jak angularowe ng-show, przyjmuje wartość która może wynosić true lub false. Jeżeli mamy ten pierwszy przypadek, element do którego przypisana jest dyrektywa, będzie widoczny na stronie. W przeciwnym wypadku użytkownik go nie zobaczy. Oto przykład:

W tym wypadku użytkownik zobaczy nagłówek. Jeśli zmieniłbym wartość dyrektywy v-if na false, nagłówek po przeładowaniu nie byłby widoczny. Oczywiście wpisywanie dosłownej wartości boolowskiej nie jest zbyt przydatne. Jako wartość dyrektywy podać można zwykłą zmienną z obiektu Vue data, lub wartość obliczaną.

Do pliku app.js dodam następujący kod:

Teraz zmienię dyrektywę tak aby testowała zmienną loggedIn:

Dopóki loggedIn równe jest true, użytkownik zobaczy nagłówek.

W Vue nie ma odpowiednika angularowergo ng-hide. Jeżeli chciałbym coś warunkowo ukryć, muszę po prostu obrócić logikę v-show:

Teraz jeżeli loggedIn zmieni się na false, użytkownik zobaczy drugi nagłówek, informujący go o stanie rzeczy.

Dyrektywy v-if oraz v-else

Druga dyrektywa warunkowa, której używałem już wcześniej, to v-if. Działą ona bardzo podobnie do v-show. Również przyjmuję wartość którą testuję pod względem prawdziwości. Jeżeli wartość równa będzie true, element do którego przypisana jest dyrektywa, wyświetli się na stronie.

Jakie są w takim razie różnice pomiędzy v-if a v-show? Pierwsza to taka, że jeżeli v-show nie zda testu, element otrzyma styl display równy none. Będzie jednak widniał w dokumencie. W przypadku v-if, element taki zostanie usunięty z DOMu. Druga różnica jest taka, że do pary dyrektywy v-if istnieje v-else.

Jeżeli test v-if nie uda się, program poszuka najbliższego v-else. Gdy taki znajdzie, wyświetli zawartość właśnie tego elementu. Oto przykład:

Jeżeli wartość loggedIn będzie fałszywa, program wyświetli drugi nagłówek, ten do którego przypisana jest dyrektywa v-else. Oczywiście jeżeli loggedIn równać będzie się true, drugi nagłówek nie będzie widoczny.

To wszystko na dziś ale jeśli chcesz być na bieżąco z postami na blogu zachęcam do polubienia mojej strony na facebooku. Zawsze zamieszczam tam informacje o wszystkich nowościach. Jest to też dobre miejsce na kontakt ze mną. Na wszystkie pytania zawsze odpowiem :).

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *