vue树形菜单由于项目原因没有在ui框架上使用树形菜单,所以自己写了一个树形菜单组件,参考了大佬的代码。废话不多说,直接上代码。html代码js代码直接调用api,直接给请求的数据赋权限,这里就不多说了。直接说最重要的部分,点击checkbox将id传给后台,实现全选和反选。全选,反向curry(e,node){if(e.target.checked){node.subDetail.forEach((sub,i)=>{node.subDetail[i].checked=true;})}else{node.subDetail.forEach((sub,i)=>{node.subDetail[i].checked=false;})}},通过v-model数据双向绑定的属性,检查返回给后台的这个字段是用于判断。当点击一级菜单的勾选值为真时,二级菜单的勾选值也被赋值为真,实现全选和反选。点击菜单添加一个id到后台监视:{permissions:{deep:true,immediate:true,handler(val){this.form.cPermissionIds=[];this.form.cDetailIds=[];val.forEach(menu=>{if(menu.checked){this.form.cPermissionIds.push(menu.cPermissionId);};menu.subDetail.forEach(sub=>{if(sub.checked){this.form.cDetailIds.push(sub.cDetailId);};});});},},},通过监听权限的数据变化,当checkbox被选中且checked为true时,将checkbox对应的id压入数组并保存。注意一定要清空前面的数组,这样可以防止多次重复点击导致数据重复。以上纯属个人观点,欢迎大家提出宝贵建议,如有雷同,请不要喷我。
