element tree动态设置默认选项与反选,反选无效问题

在这里插入图片描述

场景如图,数据结构是树形,页面组件分别是用面板和tree实现,一级是面板,二级是树,所以在数据绑定的时候,有点麻烦.感谢产品(=^ ^=)
面板绑定数据比较好操作,正是因为这里,导致了tree的数据处理起来比较麻烦,话不多说,上解决代码

                <el-collapse v-model="selectAn">
                  <template v-if="allGroupList && allGroupList.length > 0">
                    <el-collapse-item
                      v-for="(item, index) in allGroupList"
                      :key="index"
                      :name="index"    <-- 别忘了设置这个name,不然你就知道严重,
                      						用index赋值是为了方便取值 -->
                    >
                      <template slot="title">
                        <el-radio
                          v-model="searchForm.groupInfo[index]"
                          :label="item.cnId"
                        >
                          {{ item.name }}
                        </el-radio>
                      </template>
                      <el-tree
                        :ref="'eltree' + item.cnId"  <-- 这里很关键,因为是循环的 -->
                        :data="item.children"
                        show-checkbox
                        node-key="cnId"
                        :props="defaultProps"
                        :check-on-click-node="true"
                        :default-checked-keys="selectTwo"
                      >
                      </el-tree>
                    </el-collapse-item>
                  </template>
                </el-collapse>

上述的两个注意点,都是坑,我先踩为敬

js里的逻辑太多了,我就只贴关键处的代码,感兴趣的朋友可以私信我

selectTwo是tree的默认选中节点,是一个array

              if (item2 == item1[j].cnId) {
                var rf = 'eltree'+this.allGroupList[i].cnId;
                //让json数组对象的内容与新数组的内容作比较,相同的话,改变标记为false
                this.$refs[rf][0].setChecked(item2,false)
                flag = false;
              }

这里就知道ref如此的取值,长叹一口气.setChecked方法是官方提供,详情见文档.
setChecked这样才能有效的改变tree节点的选中状态,
通过改变selectTwo是没效果的,这个坑我也替各位踩了

补充一下,如果我这里只是单纯的tree组件,没有面板的话,处理起来是很简单的,
就用setChecked方法就能实现,
如果你们在实际场景中也是模板循环了多个tree,那么取值赋值用循环的方法即可

如果文章帮助到了您,麻烦您给文章点个赞,感谢了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

STARSHOME火星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值