vue3+el-dialog+el-table
时间: 2023-07-08 20:30:51 浏览: 299
在 Vue3 中,使用 Element UI 的 el-table 和 el-dialog 组件,可以按照以下步骤来实现自定义弹窗:
1. 在 el-table 中定义 scoped slot,例如:
```html
<el-table :data="tableData">
<el-table-column prop="name" label="Name"></el-table-column>
<el-table-column prop="gender" label="Gender"></el-table-column>
<el-table-column label="Actions">
<template #default="{ row }">
<el-button @click="handleClick(row)">Edit</el-button>
<el-button @click="handleDelete(row)">Delete</el-button>
</template>
</el-table-column>
</el-table>
```
2. 在 setup 函数中定义 handleClick 方法,例如:
```javascript
import { ref } from 'vue';
export default {
setup() {
const dialogVisible = ref(false);
const editRow = ref({});
const handleClick = (row) => {
dialogVisible.value = true;
editRow.value = Object.assign({}, row);
};
return {
dialogVisible,
editRow,
handleClick
};
}
}
```
3. 在 el-dialog 中使用 editRow 数据来渲染自定义的弹窗:
```html
<el-dialog v-model:visible="dialogVisible">
<el-form v-if="editRow">
<el-form-item label="Name">
<el-input v-model="editRow.name"></el-input>
</el-form-item>
<el-form-item label="Gender">
<el-radio-group v-model="editRow.gender">
<el-radio :label="1">Male</el-radio>
<el-radio :label="2">Female</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer">
<el-button @click="dialogVisible = false">Cancel</el-button>
<el-button type="primary" @click="handleSave">Save</el-button>
</div>
</el-dialog>
```
这样,当用户点击 Edit 按钮时,就会弹出自定义的编辑弹窗,用户可以在弹窗中编辑数据,点击确认按钮后,数据会保存到 editRow 中,然后再自动更新到表格中。注意,在 Vue3 中使用 v-model 绑定 el-dialog 的 visible 属性时,需要加上修饰符 `v-model:visible`,否则会出现警告。同时,在 el-dialog 中添加一个保存按钮,点击后可以保存数据并关闭弹窗。
阅读全文