Выпадающее меню vue.js

203
08 августа 2021, 16:30

Нужна помощь в реализации выпадающего меню в vue.js. Выглядеть должно примерно так :

Вот мои наработки

<template>
  <div class="header">
    <div class="side">
      <router-link to="/data-secrets"><img alt="Vue logo" src="../assets/logo.svg"></router-link>
    </div>
    <div class="side">
      <input type="text" name="">
      <img alt="bell" src="../assets/bell.png">
      <div v-on:click='showDropdown'>
        <img alt="user" src="../assets/user.png">
        <span>Joe S</span>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  name: 'HeaderComponent',
  data: {
    isShowDropdown:false,
  },
  methods: {
    showDropdown() {
            console.log(this.isShowDropdown);
        this.isShowDropdown=true
            console.log(this.isShowDropdown);
      },
    },
}
</script>
<style scoped lang="less">
.header{
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 80px;
  border-bottom: 1px solid black;
  .side{
    display: flex;
    align-items: center;
  }
}
</style>

Это отдельный компонент header. По-идее нужно на том дропдауне вставить тег v-if='isShowDropdown', но у меня это не собирается.

Answer 1

Во-первых Data лучше определить как функцию:

data: () => ({
                isShowDropdown: false,
        }),

Во-вторых. Добавить dropdown меню:

                <div v-on:click='showDropdown'>
                    <img alt="user" src="../assets/user.png">
                    <span>Joe S</span>
                </div>
                <div v-if="isShowDropdown">
                    <div>А</div>
                    <div>Б</div>
                    <div>В</div>
                </div>

И лучше сделать чтоб меню открывалось и закрывалось)

showDropdown() {
            console.log(this.isShowDropdown);
            this.isShowDropdown=!this.isShowDropdown
            console.log(this.isShowDropdown);
        },

Больше информации о выпадающих списках на Vue https://ru.vuejs.org/v2/guide/forms.html

Answer 2
<div v-on:click='showDropdown'>

Мне кажется ошибка в вызове САМОЙ функции, а не ее результата. Выражение выше возвращает примерно это [[Function]]

READ ALSO
Консоль выдает ошибку Uncaught SyntaxError: Unexpected token )

Консоль выдает ошибку Uncaught SyntaxError: Unexpected token )

Идея в том , что бы код считал сколько есть слов в массиве , которые заканчиваются "у" "іе"

218
Не устанавливается флажок checked (radio button) в onChange

Не устанавливается флажок checked (radio button) в onChange

Я в React JS новый, хотел бы кое что уточнить Код есть, в базе данных все корректно меняется при нажатии на кнопкуПроблема лишь в том, что оно не check-ается...

181
window object внутри js класса

window object внутри js класса

Имеется js classВозможно ли внутри класса отслеживать изменился размер window или нет, и если изменилось применять метод класса? Проблема: в классе...

133
Jest component mock with enzyme shallow toMatchSnapshot

Jest component mock with enzyme shallow toMatchSnapshot

Пытаюсь сделать проверку компонента по snapshot-у с помощью enzymeshallow

129