LoginSignup
1
0

More than 3 years have passed since last update.

Vue.jsでメニュー 切り替え メモ

Last updated at Posted at 2020-05-23

切り替えメニューを作りたい!

飲み物メニューボタンを押したときは、飲み物のメニューだけを表示
食べ物メニューボタンを押したときは、食べ物のメニューだけを表示
したい!

scriptタグにメソッドとデータを準備

selectedMenuというデータと
changeMenuというメソッドを作る。

selectedMenuの値は空文字でもよい。その場合初期状態では非表示になる。


<script>
    export default {
        components: {},
        data: function () {
            return {
                selectedMenu: "1"  //選択しない状態で何も表示したくないときは空文字でもよい。
            }
        },
        methods: {
            changeMenu: function (num) {
                this.selectedMenu = num
            }
        }
    }
</script>

templateタグの中を作っていきます

それぞれのメニューボタンを押すと、changeMenu()が動いて、selectedMenuの中身が変わる。

v-ifを使って、selectedMenuの中身に応じて、表示・非表示を切り替えるようにする。

:warning::warning::warning:
selectedMenu === 1にする凡ミスをよくやった。:pensive:
型に注意!!
:warning::warning::warning:

<template>
            <button v-on:click="changeMenu('1')">飲み物メニュー</button>
            <button v-on:click="changeMenu('2')">食べ物メニュー</button>      

            <ul v-if="selectedMenu==='1'">
                <li>ビール</li>
                <li>レモンサワー</li>
                <li>お冷</li>
            </ul>
            <ul v-if="selectedMenu ==='2'"> //v-else-ifでもよい
                <li>ハンバーグ</li>
                <li>カレー</li>
                <li>お茶漬け</li>
            </ul>
</template>

ついでに、

どのメニューを選択しているかわかりやすいように、menuボタンに赤色でもつけておく。

v-bindを使って、条件が合うとbuttonタグにactiveクラスが追加されるようにする。
オブジェクト構文というらしい。
buttonがactiveクラスになったときだけ、赤くなるようになった!:relaxed:


            <button v-on:click="changeMenu('1')"
                    v-bind:class="{'active':selectedMenu ==='1'}"
            >飲み物メニュー</button>

            <button v-on:click="changeMenu('2')"
                    v-bind:class="{'active':selectedMenu ==='2'}"
            >食べ物メニュー</button>
<style>
    button.active {
        color: red;
    }
</style>

参考

Vue.jsでタブメニューをつくる

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0