Как передать значение выбранного варианта из элемента `<select>` в родительский компонент с помощью события (emit) в Vue 3?

Как мне передать значение выбранного элемента из элемента select при использовании события emit в Vue.js?
Изображение к вопросу
  • 5 декабря 2023 г. 9:29
Ответы на вопрос 2
Чтобы передать значение выбранного элемента `<select>` из дочернего компонента в родительский во Vue 3, вы должны использовать пользовательское событие (`$emit`). Вот шаги, чтобы это сделать:

1. Создайте дочерний компонент, который содержит элемент `<select>`.
2. В этом компоненте, при выборе опции, обработайте событие `change` и вызовите `$emit`, чтобы создать пользовательское событие, передав в него значение выбранной опции.

Вот пример дочернего компонента:

```vue
<template>
  <select @change="handleChange">
    <option value="option1">Option 1</option>
    <option value="option2">Option 2</option>
    <option value="option3">Option 3</option>
    <!-- Добавьте необходимые варианты для вашего селекта -->
  </select>
</template>

<script>
export default {
  name: 'SelectComponent',

  methods: {
    handleChange(event) {
      // Получите выбранное значение
      const selectedValue = event.target.value;
      // Вызовите событие с выбранным значением
      this.$emit('selection-changed', selectedValue);
    }
  }
};
</script>
```

Теперь, в родительском компоненте, вы должны прослушать это событие и определить метод для обработки полученного значения:

В родительском компоненте:

```vue
<template>
  <div>
    <!-- Обработайте событие 'selection-changed' с помощью метода 'handleSelection' -->
    <select-component @selection-changed="handleSelection"></select-component>
  </div>
</template>

<script>
import SelectComponent from './SelectComponent.vue';

export default {
  components: {
    SelectComponent
  },

  methods: {
    handleSelection(value) {
      // Здесь вы можете делать что угодно со значением 'value'
      console.log('Выбрано значение:', value);
    }
  }
};
</script>
```

Когда пользователь изменит выбор в `<select>`, событие `change` будет срабатывать, вызывая метод `handleChange` в дочернем компоненте. Этот метод, в свою очередь, вызовет `$emit` с пользовательским событием `selection-changed`, которое передаст текущее выбранное значение родительскому компоненту. Родительский компонент прослушает это событие и выполнит метод `handleSelection`, где вы сможете использовать переданное значение.
https://vuejs.org/guide/essentials/forms.html#select
Похожие вопросы