vue项目中将多选列表中选中的项,依据多选列表的顺序排序
时间: 2023-12-14 09:38:24 浏览: 117
可以通过以下步骤实现:
1. 在多选列表中添加一个 `order` 属性,用于记录每个选项在列表中的顺序。
2. 在用户选中或取消选中某个选项时,更新该选项的 `order` 值,并重新排序所有选项的 `order` 值。
3. 在提交数据时,按照选项的 `order` 值排序。
下面是一个示例代码:
```vue
<template>
<div>
<div v-for="(item, index) in items" :key="item.id">
<input type="checkbox" :value="item.id" v-model="selectedItems">
{{ item.name }}
</div>
<button @click="submit">提交</button>
</div>
</template>
<script>
export default {
data() {
return {
items: [
{ id: 1, name: '选项1', order: 0 },
{ id: 2, name: '选项2', order: 0 },
{ id: 3, name: '选项3', order: 0 }
],
selectedItems: []
}
},
methods: {
updateOrder() {
this.items.forEach((item, index) => {
const isSelected = this.selectedItems.includes(item.id)
if (isSelected) {
item.order = index
} else {
item.order = -1
}
})
this.items.sort((a, b) => a.order - b.order)
},
submit() {
this.updateOrder()
const sortedItems = this.items.filter(item => item.order >= 0)
// 提交 sortedItems 到服务器
}
},
watch: {
selectedItems() {
this.updateOrder()
}
}
}
</script>
```
在上面的代码中,我们为每个选项添加了一个 `order` 属性,其初始值为 0。在用户选中或取消选中某个选项时,我们会更新该选项的 `order` 值,并重新排序所有选项的 `order` 值。在提交数据时,我们会按照选项的 `order` 值排序,并且过滤掉未选中的选项。
阅读全文