У меня есть дочерний компонент Vue (SearchBox.Vue), представляющий собой простое текстовое поле, которое запускает filterByEvent, когда пользователь нажимает клавишу Enter.В компонентах контейнера я должен получить строку в текстовом поле и выполнить функцию filterList, чтобы отфильтровать список клиентов на основе введенного имени.У меня вопрос, как передать текст, введенный в текстовом поле, родительскому компоненту?
SearchBox.vue
<template>
<div class="SearchBox">
<input type="text" id="SearchBox" placeholder="Search"
v-on:keyup.13="$emit('FilterByEvent', $event.target.value)" :value="value" >
<font-awesome-icon icon="search" />
</div>
</template>
<script>
export default {
name: 'SearchBox',
data() {
return {
value: ''
}
}
}
</script>
<style scoped>
.SearchBox {
display: flex;
}
</style>
код контейнера
<template>
<div>
<div>
<SearchBox @FilterByEvent="filterList(value)"></SearchBox>
</div>
</div>
</template>
<script lang="ts">
import { Component, Prop, Vue } from 'vue-property-decorator'
import SearchBox from '@/components/templates/SearchBox.vue'
@Component({
components: {
SearchBox
}
})
export default class ContactList extends Vue {
data() {
return {
filterString: ''
}
}
filterList(filterStr :string) {
this.$data.filterString = filterStr;
}
}
</script>