NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 8 - Jednoduchá kalkulačka ve Vue

V minulé lekci, Dokončení kalkulačky ve Vue, jsme dokončili kalkulačku.

V této lekci VueJS tutoriálu se zaměříme na jednoduchou kalkulačku, která je založená na HTML select tagu. V rámci Vue.js kurzu jsme si již dříve ukázali, jak lze s pomocí této knihovny vytvořit poměrně složitou a vybavenou kalkulačku. Nyní si ukážeme, jak můžeme takový úkol, pokud nám jednoduchá verze dostačuje, zpracovat velmi snadno a rychle.

Jednoduchá kalkulačka ve Vue

Nejprve si vytvoříme novou složku a v ní soubor SimpleCalculator.vue. Zároveň si hned můžeme definovat funkční část kódu kalkulačky, která bude velmi podobná té minulé:

<script>
export default {
    name: 'Calculator',
    data() {
        return {
            firstValue: 0,
            secondValue: 0,
            operation: 'add',
            result: 0,
        }
    }
}
</script>

Definujeme si proměnné pro dvě čísla, firstValue a secondValue. Obě na začátku nastavíme na nulu. Poté definujeme operaci, kterou nastavíme na "add" (sčítat). Následně definujeme výsledek result, který bude mít také na začátku hodnotu nula. Poté si vytvoříme HTML strukturu:

<template>

<div class="calculator">
<input v-model="firstValue" />
<input v-model="secondValue" />

        <label for="operations">Vyber operaci:</label>

        <select name="operations" id="operations" v-model="operation">
            <option value="add">Sčítat</option>
            <option value="subtract">Odčítat</option>
            <option value="multiply">Násobit</option>
            <option value="divide">Dělit</option>
        </select>

        <button @click="calculate()" class="calculate">Spočítat</button>

        <h2>{{ result }}</h2>
    </div>

</template>

Nejdůležitější částí jsou zde dva inputy, který má každý v-model. To je vlastnost tagů ve Vue, která propojí obsah pole s nějakou proměnnou uvnitř data(). Tím pádem cokoliv, co napíšeme do prvního inputu, bude automaticky uloženo do firstValue.

Poté máme label pro výběr operace a samotný list operací, mezi kterým si můžeme zvolit. Znovu tu uvidíme v-model, kterým propojíme volbu k proměnné operation. Každé <option> definujeme i value, což bude značit, čím volba naplní proměnnou ve v-modelu.

Následně vytvoříme tlačítko, které na kliknutí funkci calculate zavolá pomocí @click (také můžeme použít v-on:click). Nakonec dáme do nadpisu proměnnou result pomocí syntaxe {{ }}.

Nyní si můžeme zkusit napsat funkci calculate:

<script>
export default {
    name: 'Calculator',
    data() {
        return {
            firstValue: 0,
            secondValue: 0,
            operation: 'add',
            result: 0,
        }
    },
    methods: {
        calculate() {
            this.firstValue = parseFloat(this.firstValue)
            this.secondValue = parseFloat(this.secondValue)

            switch (this.operation) {
                case 'add':
                    this.result = this.firstValue + this.secondValue
                    break

                case 'subtract':
                    this.result = this.firstValue - this.secondValue
                    break

                case 'multiply':
                    this.result = this.firstValue * this.secondValue
                    break

                case 'divide':
                    this.result = this.firstValue / this.secondValue
                    break
            }

            this.result = Number(this.result.toFixed(4))
        },
    },
}
</script>

Funkce převede první a druhou hodnotu z typu string na float, abychom s ní mohli počítat bez konverzí JavaScriptu, které by mohly věci pokazit.

Následným jednoduchým switchem rozhodneme, jakým způsobem výsledek vypočítáme na základě hodnoty proměnné this.operation. Slovíčko ´this´ musíme použít vždy, když chceme referovat na hodnotu, která je definovaná v data(). Následně si do this.result vložíme výsledek operace. Nakonec zformátujeme this.result pomocí toFixed(), abychom měli výsledek uvedený na maximálně čtyři desetinná místa.

Pozor, v bloku switch bychom u každého case měli uvést i break, abychom předešli nechtěnému chování a ušetřili výkon.

A světě <div> se :-), máme prakticky hotovo! Samozřejmě bychom měli aplikaci nakonec i nějak nastylovat:

<style>
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500&display=swap');

:root {
    --dark: #1a1c20;
    --light: #f6f6f6;
}

* {
    margin: 0;
    padding: 0;
    font-family: 'Montserrat';
    font-weight: 500;
    font-size: 1.4rem;
    border-radius: 20px;
}

.calculator {
    margin: auto;
    margin-top: 10vh;
    display: flex;
    flex-direction: column;
    justify-content: space-around;
    background-color: var(--light);
    width: 20vw;
    height: 60vh;
    padding: 4% 10%;
    box-shadow: 0px 0px 8px lightgrey;
}

button,
input,
select {
    border: 3px solid var(--dark);
    padding: 0.5rem;
    outline: none;
    transition: 0.2s;
}

button:hover {
    color: var(--light);
    background-color: var(--dark);
}

h2 {
    padding-top: 2rem;
    font-size: 2.5rem;
}
</style>

V další lekci, Databázový klient ve Vue - Příprava projektu, započneme práci na databázovém klientovi ve Vue.


 

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Předchozí článek
Dokončení kalkulačky ve Vue
Všechny články v sekci
Vue
Přeskočit článek
(nedoporučujeme)
Databázový klient ve Vue - Příprava projektu
Článek pro vás napsal Jakub Konečný
Avatar
Uživatelské hodnocení:
8 hlasů
Aktivity