el-tree 如何实现单选 以及 单击某条name也可以实现点击checkbox的效果

4 篇文章 0 订阅
1 篇文章 0 订阅

使用elment框架的项目中有对属性结构的数据进行单选的需求,

一下是实现的方法
 

<el-tree

  size="small"

  show-checkbox

  :data="template.listClashCategory"

  node-key="id"

  :check-strictly="true"

  :default-expanded-keys="template.expandedKeys"

  :props="collisionDetails.treePorps"

  v-loading="template.tableLoading"

  @check-change="templateCheckChange"

  @node-click="templateClick"

ref="templateTree">

</el-tree>

 

check-strictly:在显示复选框的情况下,是否严格的遵循父子不互相关联的做法,默认为 false,这里改为true,父子不关联

node-key:每个树节点用来作为唯一标识的属性,整棵树应该是唯一的

 注:当你data里数据唯一表示的属性值是id的话,node-key="id",若为 zoneId的话,那node-key="zoneId"

// tree单击
    treeNodeClick (data) {
      let id = this.$refs.tree.getCheckedKeys()
      if (id instanceof Array && id[0] === data.id) {
        this.treeCheckChange(data, false)
      } else {
        this.treeCheckChange(data, true)
      }
    },
    treeCheckChange (data, check) {
      const _this = this
      this.form.parameterMajor_id = []
      if (check) {
        this.form.id = data.id
        this.$refs.tree.setCheckedKeys([data.id])
        if (data.childlist && data.childlist.length > 0) {
          _this.setDeleteids(data)
        } else {
          _this.form.parameterMajor_id.push(data.id)
          _this.initial()
        }
      } else {
        if (this.form.id === data.id) {
          this.form.parameterMajor_id = []
          this.form.id = ''
          this.$refs.tree.setCheckedKeys([])
          this.initial()
        }
      }
    },

 

 

这样就可以实现单选了

// ---------------------------------------- 2020-09-18 修改 -----------------------------------------------------

上述中会存在一个小问题,就是在使用checkbox进行选择的话,当已经选择了一个,现在再次点击来取消已选的节点,会取消不了,需要在 templateCheckChange 做如下修改

templateCheckChange () {
    if () {
        ...
    } else {
        if (this.template.checkedId === data.id) {
            this.$refs.templateTree.setCheckedKeys([])
        }
    }
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值