优雅的示例
<template>
<div>
<button @click="handleAdd">新增</button>
<button @click="handleEdit(someData)">编辑</button>
<form @submit.prevent="handleSubmit">
<input v-model="formData.name" placeholder="Name" />
<input v-model="formData.age" type="number" placeholder="Age" />
<input v-model="formData.email" type="email" placeholder="Email" />
<button type="submit">提交</button>
</form>
</div>
</template>
<script>
export default {
data() {
return {
initialFormData: {
name: '',
age: null,
email: '',
// 添加其他初始字段
},
formData: {},
isEditing: false,
};
},
created() {
this.resetFormData();
},
methods: {
handleAdd() {
this.resetFormData();
this.isEditing = false;
},
handleEdit(data) {
this.formData = { ...data };
this.isEditing = true;
},
handleSubmit() {
if (this.isEditing) {
// 处理编辑逻辑
console.log('Editing:', this.formData);
} else {
// 处理新增逻辑
console.log('Adding:', this.formData);
}
this.resetFormData();
},
resetFormData() {
this.formData = { ...this.initialFormData };
},
},
};
</script>
解释
-
初始化数据
- 在
data函数中,定义了一个initialFormData对象,用来存储初始的空值数据。 - 在
created生命周期钩子中,调用resetFormData方法来初始化formData。
- 在
-
新增和编辑操作
handleAdd方法调用resetFormData方法,将formData重置为initialFormData的副本,并将isEditing设置为false。handleEdit方法将传入的数据赋值给formData,并将isEditing设置为true。
-
表单提交
handleSubmit方法根据isEditing的值来区分是处理新增还是编辑逻辑,并在处理完成后调用resetFormData方法重置表单数据。
-
重置表单数据
resetFormData方法将formData重置为initialFormData的副本。这种方式确保每次重置时都有统一的初始值,而不需要单独的方法来获取初始值。
通过这种方式,可以更优雅地管理新增和编辑功能,并在每次新增操作时将数据重置为初始状态,避免了重复代码和额外的方法定义。
:嗯,这个办法好,很优雅。
很高兴你觉得这个方法优雅。如果你有更多关于Vue或其他前端技术的问题,随时可以问我。祝你编码愉快!