treeselect只选了分支节点全选_React计算antd的TreeSelect组件所选中的子节点数量

antd的TreeSelect组件在处理例如公司层级、学科系统、分类目录等等的树形选择需求时很好用。

在使用这个组件时,我们往往需要获取所选中的所有节点以及所选中的所有子节点的数量。

查看TreeSelect的api找到了组件的选中回调方法onChange

在理解onChange方法的参数含义前,要先知道TreeSelect组件的数据格式

onChange方法有三个参数,value表示所选中的节点的value字段值,label代表所选中的节点的title字段值。而最后一个extra参数是获取所选中子节点数量的关键,它是一个Object对象。

通过查看extra的数据,找到了allCheckedNodes这个字段。这个字段里放置着所有被选中的节点的数据。其格式如下

[

{

"node":{

"key":"1",

"ref":null,

"props":{

"title":"全体老师",

"value":"1",

"children":[

{

"key":"1-1",

"ref":null,

"props":{

"title":"老师1",

"value":"1-1",

"children":[

]

},

"_owner":null,

"_store":{

}

},

{

"key":"1-2",

"ref":null,

"props":{

"title":"老师2",

"value":"1-2",

"children":[

]

},

"_owner":null,

"_store":{

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过设置 `flattenSearchResults` 属性来实现只能选择第N级元素的需求。具体实现方法如下: 首先,在 `treeselect` 标签中设置 `flattenSearchResults` 为 `true`,这样搜索结果将会以扁平化的形式展示出来。 然后,通过在 `treeselect` 标签中设置 `normalizer` 属性来控制每个选项的级别。`normalizer` 是一个函数,它将每个选项的原始数据转换为一个对象,该对象包含 `id`、`label` 和 `level` 三个属性。 最后,你可以通过设置 `showCount` 属性来展示每个选项的子节点数量。这样用户就可以根据子节点数量来判断每个选项的级别。 以下是一个示例代码: ```html <template> <div> <treeselect v-model="selectedNodes" :options="options" :flatten-search-results="true" :normalizer="normalize" :show-count="true" placeholder="请选择" /> </div> </template> <script> export default { data() { return { selectedNodes: [], options: [ { id: 1, label: '第一级元素', children: [ { id: 2, label: '第二级元素', children: [ { id: 3, label: '第三级元素', children: [ { id: 4, label: '第四级元素' }, { id: 5, label: '第四级元素' } ] } ] } ] } ] } }, methods: { normalize(node) { return { id: node.id, label: node.label, level: this.getLevel(node) } }, getLevel(node) { let level = 0 while (node.parent) { level++ node = node.parent } return level } } } </script> ``` 在上面的示例代码中,我们通过 `normalizer` 函数将每个选项的原始数据转换为一个包含 `id`、`label` 和 `level` 三个属性的对象。`level` 属性表示每个选项的级别。 然后,我们使用 `getLevel` 函数来计算每个选项的级别。该函数使用一个 `while` 循环来计算选项的父级数量,从而确定选项的级别。 最后,我们将 `flattenSearchResults` 属性设置为 `true`,将 `normalizer` 属性设置为我们定义的 `normalize` 函数,将 `showCount` 属性设置为 `true`,这样就可以实现只能选择第 N 级元素的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值