我使用vue-select在我的vue应用程序中使用select进行搜索。例如,当我在vue-select中点击一个选项时,它将在另一个对象中发送给我,并在选择器之后消失。
我怎么能这么做呢?我做过这样的事,但这并不好
Selector
<v-select
v-model="value"
:options="dataTags"
multiple
@click="onAdd()"
placeholder="Select your data">
</v-select>Js
<script>
export default {
props: {
dataTags: {
type: Object,
required: true
}
},
data() {
return {
value: '',
Items: {
selected_items: []
}
}
},
methods: {
onAdd() {
this.Items.selected_items.push(this.value);
this.value = '';
}
}
}
</script>而数据标签只是这些标签的一个数组,没有什么特别的。它是基于id和标签的。那么,如何继续将所选项目发送到新对象,并使它们从选择器中消失呢?我能用某种方式把它们藏起来吗?
发布于 2021-10-13 07:47:55
vue-select会发出一个名为input的事件,该事件可以为您提供选定的值。请参阅文档的"Event: input“https://vue-select.org/guide/values.html#getting-and-setting下的这一节
它应该是这样的:
<v-select
v-model="value"
:options="dataTags"
multiple
@input="onAdd"
placeholder="Select your data">
</v-select>发布于 2021-10-13 08:22:07
也许可以尝试使用计算属性过滤选项:
Vue.component('v-select', VueSelect.VueSelect)
new Vue({
el: '#app',
data: {
currentlySelected: null,
options: ['aaaaa', 'bbbbb', 'ccccc'],
usedOptions: []
},
methods: {
select(value) {
this.usedOptions.push(value)
this.currentlySelected = null
}
},
computed: {
filteredOptions() {
return this.options.filter(option => !this.usedOptions.includes(option))
}
}
})#app {
display: flex;
flex-direction: column;
gap: 1rem;
margin: 2rem;
}<link href="https://unpkg.com/vue-select/dist/vue-select.css" rel="stylesheet"/>
<script src="https://unpkg.com/vue-select@3.13.2/dist/vue-select.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<v-select v-model="currentlySelected" :options="filteredOptions" @input="select"></v-select>
already used: {{usedOptions}}
</div>
https://stackoverflow.com/questions/69551474
复制相似问题