前言:业务需求同时需要传给后台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,赋值哪里弄了好一会记录一下,有更好的解决方案欢迎点评。

Logo

前往低代码交流专区

更多推荐