动态增加复选框,写完之后,发现选中一个其他都给选中了。
原因: 调接口查询出数据时,默认选中第一个赋值错误,直接将字符串赋值给了数组。
<el-form-item label="标签:"> <el-checkbox-group v-model="form.tacticsTag"> <el-checkbox v-for="tag in tacticsTagList" :key="tag.dataSubtype" :label="tag.dataSubtype" >{{ tag.dataSubtypeName }}</el-checkbox> </el-checkbox-group> </el-form-item> data() { return { tacticsTagList: [], form: { tacticsTag: [],//绑定的必须是数组 }, } }, mounted() { this.getTacticsTag() }, methods: { getTacticsTag() { strategyAPI.getTacticsTag({ dataType: 'tacticsTag' }, data => { this.tacticsTagList = data.data //默认选中第一个,这里出错了,写的是this.form.tacticsTag = data.data[0].dataSubtype,不能把字符串赋值给数组。 //正确的写法如下 this.form.tacticsTag = [data.data[0].dataSubtype] }, error => console.log(error)) }, }表单提交,如果直接写为tacticsTag: this.form.tacticsTag,这时候提交到后台的是[1,2,3] 如果后台需要字符串格式,那么提交时需要写为:
this.form.tacticsTag.toString() ,格式就变成了"1,2,3"
修改页面回显时,因为后台数据库中存的是以逗号分隔的字符串,所以回显时需要将字符串按照","分隔成数组,在回显到页面。
this.form.tacticsTag = this.form.tacticsTag ? this.form.tacticsTag.split(’,’) : []