点击按钮动态控制iview树形控件展开收起

本文介绍了一个Vue.js组件的实现,通过`<Tree>`组件展示数据,并利用`isOpen`变量控制树形结构的展开和关闭。`changes`方法用于递归设置节点的展开状态,而`selectChange`方法在选中节点时更新其展开状态。使用`this.$set`确保数据响应性,从而实时更新视图。
摘要由CSDN通过智能技术生成

组件:

<template>
  <div id="app">
    <Button type="warning" @click="changes(data1, isOpen)">{{
      isOpen ? "点击展开" : "点击关闭"
    }}</Button>
    <Tree :data="data1" @on-select-change="selectChange"></Tree>
  </div>
</template>

初始化数据:

export default {
  data() {
    return {
      isOpen: true,
      data1: [
        {
          title: "parent 1",
          children: [
            {
              title: "parent 1-1",
              children: [
                {
                  title: "leaf 1-1-1",
                },
                {
                  title: "leaf 1-1-2",
                },
              ],
            },
            {
              title: "parent 1-2",
              children: [
                {
                  title: "leaf 1-2-1",
                },
                {
                  title: "leaf 1-2-1",
                },
              ],
            },
          ],
        },
      ],
    };
  },

isOpen控制tree是否展开与收起,false收起,true展开。

方法:

 methods: {
    changes(treeData, flag) {
      for (let i = 0; treeData && i < treeData.length; i++) {
        this.$set(treeData[i], "expand", flag);
        if (treeData[i].children) {
          treeData[i].children = this.changes(treeData[i].children, flag);
        }
      }
      this.isOpen = !flag;
      return treeData;
    },
    selectChange(data, selectedNode) {
      this.$set(selectedNode, "expand", !selectedNode.expand);
    },
  },

使用this.$set确保被创建后的对象也是响应式,触发视图的更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值