Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

132
Visualizações
How to get clicked element from dropdown child component?

I have this components, that is dropdown menu:

<template>
  <div class="dropdown-menu" v-click-outside="close">
    <p class="paragraph medium dropdown-default-value" @click="$emit('show')">
      <span>{{ defaultValue }}</span>
    </p>
    <div v-if="showContent" class="dropdown-menu-content">
      <div v-for="item in dropdownItems">
        <p class="paragraph medium drop-item" @click="pick(item)">{{ item }}</p>
      </div>
    </div>
  </div>
</template>

<script>
import vClickOutside from 'v-click-outside';
export default {
  name: "Dropdown",
  directives: {
    clickOutside: vClickOutside.directive
  },
  props: {
    defaultValue: String,
    dropdownItems: Array,
    showContent: Boolean,
    onShow: Boolean
  },
  methods: {
    close() {
      this.$emit('close')
    },
    pick(item) {
      this.$emit('pick', item)
    }
  }
}
</script>

This is clild component with props, in parent component it looks like this:

<Dropdown
  :default-value="item.default"
  :show-content="item.show"
  :dropdown-items="item.items"
  @show="item.show = !item.show"
  @close="item.show = false"
  @pick="pick(item)"
/>
...
export default {
  name: "settings",
  data() {
    return {
      settingsOptions: [
        { title: 'Language', text: 'Interface language', show: false, default: 'English', items: ['English', 'Russian', 'Polish'] },
        { title: 'Theme', text: 'Chose dark or light theme', show: false, default: 'Dark', items: ['Dark', 'Light'] },
        { title: 'Default currency', text: 'Chose default currency for pages, etc.', show: false, default: 'EUR', items: ['EUR', 'USD'] }
      ],
      showDropdown: false
    }
  },
  methods: {
    pick(item) {
      console.log(item)
    }
  }
}

The problem is in pick function, I have no idea on how to implement this. This code you see here just prints this whole item, and this is as far as I could get. What I need, is to get element which has been clicked, using $emit of course.

How can I pass this clicked element in $emit?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Method pick in component was defined right:

pick(item) {
   this.$emit('pick', item)
}

All you need to do is in parent component use $event as param in your function:

<Dropdown
  :default-value="item.default"
  :show-content="item.show"
  :dropdown-items="item.items"
  @show="item.show = !item.show"
  @close="item.show = false"
  @pick="pick($event)"
/>
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda