根据择校意向中专业方向的数量动态增加和删除左侧的职业规划,目前可以动态增加了但是增加的表单内容都一样互相影响
这是职业规划中的内容
应该是需要动态增加表单,但是我是做后端的前端不熟,希望能看到可以使用的代码
你怎么又发贴了?
<template>
<el-form :model="form" :rules="rules" ref="form" label-width="100px" class="form">
<el-tabs v-model="activeName" @tab-click="handleClick" @tab-remove="handleRemove">
<el-tab-pane v-for="(item, index) in form.intention" :key="index" :label="item.name" :name="index">
<el-form-item label="职业规划" prop="plan">
<el-input v-model="item.plan" autocomplete="off"></el-input>
</el-form-item>
</el-tab-pane>
</el-tabs>
</el-form>
</template>
<script>
export default {
data() {
return {
activeName: 0,
form: {
intention: [
{
name: '专业方向一',
plan: ''
}
]
},
rules: {
plan: [
{ required: true, message: '请填写职业规划', trigger: 'blur' }
]
}
}
},
methods: {
handleClick(tab, event) {
console.log(tab, event)
},
handleRemove(targetName) {
console.log(targetName)
}
}
}
</script>
该回答引用GPTᴼᴾᴱᴺᴬᴵ
如果你想要实现动态增加表单,但是表单之间不会互相影响,可以尝试以下步骤:
以下是一个示例代码:
<template>
<div>
<el-tabs v-model="activeTab">
<el-tab-pane v-for="(form, index) in formList" :key="form.id" :label="`表单 ${index + 1}`">
<el-form :model="form" :rules="rules">
<el-form-item label="名称" prop="name">
<el-input v-model="form.name"></el-input>
</el-form-item>
<el-form-item label="内容" prop="content">
<el-input v-model="form.content"></el-input>
</el-form-item>
</el-form>
</el-tab-pane>
</el-tabs>
<el-button @click="addForm">增加表单</el-button>
</div>
</template>
<script>
export default {
data() {
return {
activeTab: 0,
formList: [],
rules: {
name: [
{ required: true, message: '请输入名称', trigger: 'blur' }
],
content: [
{ required: true, message: '请输入内容', trigger: 'blur' }
]
}
}
},
methods: {
addForm() {
const newForm = {
id: Date.now(),
name: '',
content: ''
}
this.formList.push(newForm)
this.activeTab = this.formList.length - 1
},
removeForm(index) {
this.formList.splice(index, 1)
}
}
}
</script>
在以上示例代码中,每个表单都有自己独立的状态,删除表单时只需要移除对应的表单对象即可。在表单中需要绑定的数据属性中加上唯一标识符,确保每个表单之间不会互相影响。
你的源码不贴一下,怎么知道具体逻辑呢?你这个主要问题就是对象没有唯一标识,导致互相影响。给所需的表单对象加一个索引值,就很容易区分开了,也可以结合ref_+n去识别