直接贴代码吧

<el-tree :data="formData.roleMenuList" class="zl-slot-tree" node-key="id" :props="defaultProps" :expand-on-click-node="false">

<div class="custom-tree-node" slot-scope="{ node, data }">

<div style="width: 195px;">

<span>{{ data.name }}</span>

<span class="menuCheck">

<el-checkbox v-model="data.isCheck" @change="((val) => { handleCheckAllChange(val, data) })">开启</el-checkbox>

</span>

</div>

<div class="funcList">

<el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">

<el-checkbox v-for="item in data.roleFunctionList" :label="item.id" :key="item.id">{{ item.name }}</el-checkbox>

</el-checkbox-group>

</div>

</div>

</el-tree>

实现效果

要求点击开启时候,实现子数据的全选和反选。

原本的思路是,点击开启绑定个@change事件,但官网上checkbox的change事件,在事件中拿到的是选中后改变的状态,也就是true或者false,并且不接受其他传值。

后来百度了下,网友都是用手动递归,然后给el-checkbox-group绑定个v-model,v-model为选中checkbox的id集合,我嫌太麻烦。就想了个办法

 

利用es6语法,手动塞值, 这样我们在方法里既能拿到改变后的状态,又能拿到当前菜单的子数据。

GitHub 加速计划 / eleme / element
15
2
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:2 个月前 )
c345bb45 1 年前
a07f3a59 * Update transition.md * Update table.md * Update transition.md * Update table.md * Update transition.md * Update table.md * Update table.md * Update transition.md * Update popover.md 1 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐