前言:业务需求同时需要传给后台id和name,虽说不理解,但是需求提了就要做。
思路:先想到的就是拼接字符串方式,以逗号隔开绑定到label上
取值:在向后台接口发送数据时,拆分成各字段所需要的值给接口
赋值:接收后台数据,将各自值拼接回字符串给新数组,组合成新的数组,绑定到data内
具体代码如下:
html:
<el-checkbox-group v-model="dataForm">
<el-checkbox
v-for="(item, i) in list"
:key="i"
:disabled="disabled"
:label="item.id + ',' + item.name"
name="type"
>{{item.name}}</el-checkbox>
</el-checkbox-group>
js
// 初始化数据
data () {
return {
// 因为是多个复选框,所以我们会得到一个数组
dataForm: [],
list: [
{
id:0,
name:'苹果'
},
{
id:1,
name:'香蕉'
}
]
}
}
// 取值, 对数组拆分,取出对应字段参数
let idArr = []
let nameArr = []
this.dataForm.forEach(item => {
let arr = item.split(',')
idArr.push(arr[0])
nameArr.push(arr[1])
})
//传给后台数据
let parameter = {
id: idArr,
name: nameArr
}
// 赋值,将保存的复选框勾选上
let newArr = [] // 新的数组
id.forEach(item => {
name.forEach(items => {
newArr.push(item + ',' + items)
})
})
this.dataForm= newArr
emmmmm,赋值哪里弄了好一会记录一下,有更好的解决方案欢迎点评。