Vue3+ElementUI使用el-select multiple 单选或多选,点击编辑后弹框回显数据
时间: 2024-03-20 08:43:21 浏览: 82
如何利用vue+vue-router+elementUI实现简易通讯录
如果你在Vue3和ElementUI中使用el-select组件的multiple属性进行单选或多选,并且想要在点击编辑按钮后,弹出一个弹框来显示选择的结果,可以使用ElementUI的Dialog组件来实现。具体步骤如下:
1. 在父组件中,给el-select绑定一个v-model,用来存储选择的值,并在点击编辑按钮时,打开一个Dialog弹框,用来显示选择结果。
2. 将选择结果传递给Dialog弹框,在弹框中显示选择结果。
下面是一个简单的示例代码:
父组件:
```html
<template>
<div>
<el-select v-model="selected" multiple>
<el-option label="Option 1" value="1"></el-option>
<el-option label="Option 2" value="2"></el-option>
<el-option label="Option 3" value="3"></el-option>
</el-select>
<el-button @click="edit">编辑</el-button>
<el-dialog :visible.sync="dialogVisible" title="选择结果">
<div v-for="item in selected" :key="item">{{ item }}</div>
</el-dialog>
</div>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const selected = ref([]) // 存储选择结果的数组
const dialogVisible = ref(false) // 控制Dialog弹框显示的变量
const edit = () => {
// 打开Dialog弹框
dialogVisible.value = true
}
return {
selected,
dialogVisible,
edit
}
}
}
</script>
```
在父组件中,我们使用了Vue3的Composition API来定义了存储选择结果的数组和控制Dialog弹框显示的变量,并在edit方法中,打开了Dialog弹框。
在Dialog弹框中,我们使用了v-for来遍历选择结果数组,将每个选择结果显示在弹框中。
注意,我们使用了v-bind.sync来将dialogVisible属性和Dialog组件中的visible属性进行了双向绑定,这样就可以在父组件中控制Dialog弹框的显示和隐藏。
子组件:
```html
<template>
<div>
<el-select v-model="selected" :multiple="true">
<el-option label="Option 1" value="1"></el-option>
<el-option label="Option 2" value="2"></el-option>
<el-option label="Option 3" value="3"></el-option>
</el-select>
</div>
</template>
<script>
import { defineProps, ref, watch } from 'vue'
export default {
props: {
selected: {
type: Array,
default: () => []
}
},
setup(props) {
const selected = ref(props.selected) // 存储选择结果的数组
// 监听父组件传递的选择结果,更新子组件的选择结果
watch(() => props.selected, (newValue) => {
selected.value = newValue
})
return {
selected
}
}
}
</script>
```
在子组件中,我们使用了props来接收父组件传递的v-model的值,并在el-select中绑定这个值,用来实现选择功能。
在父组件中,我们使用v-bind.sync来将父组件中的selected属性和子组件中的selected属性进行了双向绑定,这样就可以实现在父组件中点击编辑后,Dialog弹框内部的回显数据。
阅读全文