vue 根据后台数据动态获取复选框
程序员文章站
2022-05-31 13:29:50
...
vue 根据后台数据动态获取复选框
<template>
<div id="Demo">
<el-form ref="form" label-width="100px">
<el-form-item label="设备名称">
<div
class="check-group"
v-for="(item, index) in equipments"
:key="index">
<el-tag>{{item.menu}}</el-tag>
<el-checkbox-group
v-model="checkedEquipments[index]"
@change="handleChange(item.id)">
{{checkedEquipments[index]}}
<el-checkbox
v-for="data in item.childMenu"
:label="data.id"
:key="data.menu">
{{data.menu}}
</el-checkbox>
</el-checkbox-group>
</div>
</el-form-item>
</el-form>
</div>
</template>
export default {
data() {
return {
checkedEquipments: [], //随意修改后的checked项(即要传到后台的变更数据)
equipments: [ // 所有数据
{
id: '1',
menu: '设备1',
childMenu: [{
id: '1-1',
menu: '暖通一'
}, {
id: '1-2',
menu: '照明一'
}, {
id: '1-3',
menu: '取暖一'
}, {
id: '1-4',
menu: '应急一'
}
]
},
{
id: '2',
menu: '设备2',
childMenu: [
{
id: '2-1',
menu: '暖通二'
}, {
id: '2-2',
menu: '照明二'
}, {
id: '2-3',
menu: '取暖二'
}, {
id: '2-4',
menu: '应急二'
}
]
}
],
checkEquip: [ //模拟后台获取的数据(各el-checkbox-group默认checked项)
{
id: '1',
menu: '设备1',
childMenu: [
{
id: '1-1',
menu: '暖通一'
}, {
id: '1-2',
menu: '照明一'
}
]
}, {
id: '2',
menu: '设备2',
childMenu: []
}
]
};
},
methods: {
handleChange () {
this.checkEquipArr = []
let arr = this.checkedEquipments
for (let i = 0; i < arr.length; i ++) {
let equipment = arr[i]
if (equipment.length > 0) {
let obj = {
id: this.equipments[i].id,
equips: []
}
for (let j = 0; j < equipment.length; j++) {
obj.equips.push(equipment[j])
}
this.checkEquipArr.push(obj)
}
}
console.log(this.checkEquipArr);
}
},
created () {
// 初始化默认选中状态
for (let i = 0; i < this.checkEquip.length; i++) {
let checkArr = []
let item = this.checkEquip[i].childMenu
if (item.length === 0) {
this.checkedEquipments.push([])
}else {
for (let j = 0; j < item.length; j ++) {
checkArr.push(item[j].id)
}
this.checkedEquipments.push(checkArr)
}
}
console.log(this.checkedEquipments);
}
};
数据格式替换成自己的就可以
上一篇: bootstrap警告框
下一篇: layer web前端的框架的使用,
推荐阅读
-
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
-
解决Vue axios post请求,后台获取不到数据的问题方法
-
vue.js配合$.post从后台获取数据简单demo分享
-
详解vue渲染从后台获取的json数据
-
利用js将ajax获取到的后台数据动态加载至网页中的方法
-
table根据后台数据动态加载行
-
layui 根据后台数据动态创建下拉框并同时默认选中的实例
-
Vue + element实现动态显示后台数据到options的操作方法
-
Vue Router根据后台数据加载不同的组件实现
-
ECharts动态获取后台传过来的json数据进行多个折线图的显示,折线的数据由后台传过来