vue+axiost+el-botton实现新增,编辑,删除表格数据
时间: 2024-04-14 20:25:43 浏览: 187
vue实现表格数据的增删改查
5星 · 资源好评率100%
以下是一个使用 Vue、Axios 和 Element UI 的示例,演示如何实现表格数据的新增、编辑和删除操作:
```html
<template>
<div>
<!-- 新增按钮 -->
<el-button type="primary" @click="addData">新增</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 type="primary" @click="editData(scope.row)">编辑</el-button>
</template>
</el-table-column>
<el-table-column label="操作">
<!-- 删除按钮 -->
<template slot-scope="scope">
<el-button type="danger" @click="deleteData(scope.$index)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 编辑/新增表单弹窗 -->
<el-dialog :visible.sync="dialogVisible" title="编辑/新增数据" @close="resetForm">
<el-form :model="formData" label-width="80px">
<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>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="saveData">保存</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import axios from 'axios';
export default {
data() {
return {
tableData: [], // 表格数据
dialogVisible: false, // 编辑/新增表单弹窗显示状态
formData: { // 编辑/新增表单数据
name: '',
age: 0
},
editIndex: -1 // 当前编辑的数据索引
};
},
mounted() {
this.loadData();
},
methods: {
// 加载表格数据
loadData() {
axios.get('/api/data').then(response => {
this.tableData = response.data;
}).catch(error => {
console.error(error);
});
},
// 新增数据
addData() {
this.dialogVisible = true;
},
// 编辑数据
editData(row) {
this.editIndex = this.tableData.indexOf(row);
this.formData = Object.assign({}, row);
this.dialogVisible = true;
},
// 保存数据
saveData() {
if (this.editIndex > -1) {
// 编辑模式下保存数据
axios.put(`/api/data/${this.editIndex}`, this.formData).then(() => {
this.loadData();
this.dialogVisible = false;
}).catch(error => {
console.error(error);
});
} else {
// 新增模式下保存数据
axios.post('/api/data', this.formData).then(() => {
this.loadData();
this.dialogVisible = false;
}).catch(error => {
console.error(error);
});
}
},
// 删除数据
deleteData(index) {
axios.delete(`/api/data/${index}`).then(() => {
this.loadData();
}).catch(error => {
console.error(error);
});
},
// 重置表单
resetForm() {
this.formData = {
name: '',
age: 0
};
this.editIndex = -1;
}
}
};
</script>
```
上述示例中,使用了 Element UI 的组件来构建表格和表单弹窗,通过 Axios 发送 HTTP 请求与后端进行数据交互。具体实现包括:
1. 使用 `el-table` 组件展示表格数据,每行包括姓名、年龄和编辑、删除操作按钮。
2. 点击新增按钮,弹出编辑/新增表单弹窗。
3. 编辑数据时,将当前行的数据复制到表单数据对象 `formData` 中,并打开编辑/新增表单弹窗。
4. 保存数据时,根据是否处于编辑模式选择发送 PUT 请求(编辑数据)或 POST 请求(新增数据)。
5. 删除数据时,发送 DELETE 请求。
6. 利用 `axios` 发送异步请求获取/保存/删除数据。
7. `mounted` 钩子函数中调用 `loadData` 方法加载初始数据。
请根据你的具体需求和后端接口进行适当的修改和调整。
希望这个示例能够帮助到你!如果你有任何进一步的问题,请随时提问。
阅读全文