vue element实现增删
Vue + Element UI 实现增删功能
依赖安装 确保项目已安装 Vue 和 Element UI:
npm install vue element-ui
基础表格结构 在 Vue 组件中引入 Element UI 表格组件,并定义数据与操作按钮:
<template>
<div>
<el-button type="primary" @click="handleAdd">新增</el-button>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button size="mini" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
<el-button size="mini" type="danger" @click="handleDelete(scope.$index)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 新增/编辑对话框 -->
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible">
<el-form :model="formData">
<el-form-item label="姓名">
<el-input v-model="formData.name"></el-input>
</el-form-item>
<el-form-item label="年龄">
<el-input v-model.number="formData.age"></el-input>
</el-form-item>
</el-form>
<div slot="footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="submitForm">确认</el-button>
</div>
</el-dialog>
</div>
</template>
数据与逻辑实现
<script>
export default {
data() {
return {
tableData: [
{ name: '张三', age: 20 },
{ name: '李四', age: 25 }
],
dialogVisible: false,
dialogTitle: '新增',
formData: {
name: '',
age: null
},
editIndex: -1
}
},
methods: {
handleAdd() {
this.dialogTitle = '新增';
this.formData = { name: '', age: null };
this.editIndex = -1;
this.dialogVisible = true;
},
handleEdit(index, row) {
this.dialogTitle = '编辑';
this.formData = { ...row };
this.editIndex = index;
this.dialogVisible = true;
},
handleDelete(index) {
this.$confirm('确认删除?', '提示', {
type: 'warning'
}).then(() => {
this.tableData.splice(index, 1);
this.$message.success('删除成功');
});
},
submitForm() {
if (this.editIndex === -1) {
this.tableData.push({ ...this.formData });
} else {
this.tableData.splice(this.editIndex, 1, { ...this.formData });
}
this.dialogVisible = false;
this.$message.success('操作成功');
}
}
}
</script>
关键点说明
- 通过
splice方法实现删除和更新操作 - 使用
{ ...object }进行对象浅拷贝避免数据绑定问题 - 对话框复用处理新增和编辑两种状态
- 通过
editIndex标记当前操作的行索引
样式补充 可添加 CSS 调整间距:
<style scoped>
.el-button {
margin-bottom: 15px;
}
</style>
扩展功能建议
- 添加表单验证规则
- 集成后端 API 调用
- 增加分页控件
- 实现批量删除功能







