el-tree 与el-select结合数据加载,清空选择 收起列表

<div class="qhTree-main">
<el-select
style="text-overflow: ellipsis;"
  v-if="reLoad"
size="mini"
ref="selectTree"
v-model="checkName"
placeholder="请选择...">
<el-option :value="treeData" style="height: auto">
<el-tree
  ref="tree"
  lazy
  show-checkbox
  :load="loadFolder"
  check-strictly
  node-key="id"
  empty-text="无匹配数据"
  :props="{children: 'children',label: 'name',isLeaf: 'leaf'}"
  @check-change="handleCheckChange"
/>
</el-option>
</el-select>
</div>

 

loadFolder (node, resolve) { // 获取区划列表
      if (node.data === undefined) { // 获取省
        this.$store.dispatch('qh', {code: '0', op: 2}).then((res) => {
          if (res.data.code === 1) {
            let item = []
            item.push(res.data.result.find(ele => {
              return ele.id === this.userInfo.code
            }))
            resolve(item)
          }
        }).catch(err => { console.log(err) })
      }
}
handleCheckChange (data, checked, indeterminate) { // 多选
      if (checked) {
        // debugger
        this.tempData.push(data)
      } else {
        this.tempData.forEach((ele, index) => {
          if (ele.id === data.id) {
            this.tempData.splice(index, 1) // 根据下标删除不需要的对象
          }
        })
      }
      let _this = this
      if (this.timer) {
        clearTimeout(this.timer)
      }
      this.timer = setTimeout(() => { // 全选时会多次触发,设置防抖
        _this.putOut()
      }
        , 500)
    },
this.$refs.tree.setCheckedKeys([])//清空选择
for (var i = 0; i < this.$refs.tree.store._getAllNodes().length; i++) { // 收起列表
    this.$refs.tree.store._getAllNodes()[i].expanded = false

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-tree内使用el-select的目的是为了实现树形结构的多选功能。通过el-tree选择需要的节点并获取数据,然后将获取的数据关联到el-select并渲染输入框的内容。这样可以实现在el-tree选择节点后,在el-select中显示选中的节点,并可以进行多选操作。具体实现的步骤如下: 1. 在el-select中设置v-model绑定一个数组,用于存储选中的节点数据。 2. 在el-tree中设置show-checkbox属性,以显示复选框。 3. 在el-tree的check-change事件中,通过this.$refs.tree.getCheckedNodes()方法获取选中的节点数据,并将其赋值给selectTree数组和value数组。 4. 在el-selectel-option中设置disabled属性,以禁用选项,因为选项的数据是通过el-tree获取的,而不是通过option。 5. 在el-select的remove-tag事件中,通过this.$refs.tree.getCheckedNodes()方法获取当前选中的节点数据,并将其从selectTree数组和value数组中移除。 6. 在el-select的clear事件中,将selectTree数组和value数组置空,并通过this.$refs.tree.setCheckedNodes(\[\])方法将el-tree中的选中状态清空。 通过以上步骤,就可以实现在el-tree内使用el-select,并实现树形结构的多选功能。 #### 引用[.reference_title] - *1* *2* *3* [el-selectel-tree结合使用-树形结构多选框](https://blog.csdn.net/s_9527_s/article/details/125320894)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值