vue2 实现el-tree组件全部数据刷新

        最近在开发的时候,有个选择组织的需求,并且有搜索的功能;搜索结果出来后需要重置整个el-tree的数据,这时发现不知道怎么重置数据我擦。。  写个帖子记录一下解决方法,这里用了个最简便的方式完成的

  • 组件初始效果:

  • 输入关键字搜索后的效果:

上代码!!

HTML代码:

<el-row>
        <el-col :span=19>
          <el-input placeholder="请输入关键字进行过滤" v-model="filterText" @input="searchValInput"></el-input>
        </el-col>
        <el-col :span="4" :offset="1" v-if="showSubDistrict">
          <el-checkbox v-model="subDistrict">包含下级</el-checkbox>
        </el-col>
      </el-row>
      <div class="down-tree">
        <el-tree
          class="filter-tree"
          :props="defaultProps"
          node-key="id"
          :check-strictly="true"
          :show-checkbox="this.showCheckbox"
          :filter-node-method="filterNode"
          :default-checked-keys="defaultCheckKey"
          :default-expanded-keys="expandedKeys"
          @node-click="nodeSelected"
          @check="nodeCheck"
          @check-change="nodeCheckChange"
          lazy
          :load="loadNode"
          ref="myTree">
          <span class="custom-tree-node" slot-scope="{ node, data }">
            <span v-if="data.disabled" style="color: #c8c0c0;cursor: not-allowed;">{{ data.name }}</span>
            <span v-else  >{{ data.name }}</span>
         </span>
        </el-tree>
      </div>

JS代码:

searchValInput: debounce(function(val) {
    console.log("搜索关键字::::: ", val)

    // 1. 获取树的store数据
    let { nodesMap } = this.$refs.myTree.root.store;

    // 2. 调用搜索接口获取结果
    let data = {name: val}
    orgTree(this.pick, data).then(res=>{
        if(res.data && res.success) {
            // 3. 清空store数据
            nodesMap = {};

            // 4. 重新赋值
            this.$refs.myTree.root.setData(res.data);
        }
    })

}, 1000),

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 组件 el-tree刷新操作可以通过重新加载数据实现。要刷新 el-tree,我们可以通过修改数据源来更新树的显示。 具体的刷新步骤如下: 1. 首先,确保已经正确引入了 el-tree 组件,并在 Vue 实例中注册了 el-tree。 2. 在 Vue 实例的 data 中定义一个数组,用于存放 el-tree数据源,例如 treeData。 3. 在页面中使用 el-tree 组件,并将 treeData 绑定到 el-tree 的 data 属性上,可以通过 v-bind 或简写方式来实现。 4. 当需要刷新 el-tree 时,可以通过调用一个方法来修改 treeData 数组,更新数据源。 5. 在该方法中,可以使用合适的方式获取新的数据,并将新的数据赋值给 treeData 数组,例如使用 axios 发送请求获取新数据。 6. 当 treeData 数组发生变化时,el-tree 会自动更新其显示,实现刷新效果。 例如,假设要在 el-tree刷新数据,可以使用如下代码: ``` <template> <el-tree :data="treeData"></el-tree> <el-button @click="refreshTree">刷新</el-button> </template> <script> import axios from 'axios'; export default { data() { return { treeData: [] // el-tree数据源 } }, methods: { refreshTree() { axios.get('/api/treeData') // 从后端请求新的数据 .then(response => { this.treeData = response.data; // 将新的数据赋值给 treeData 数组 }) .catch(error => { console.log(error); }); } }, mounted() { this.refreshTree(); // 初始化时刷新 el-tree } } </script> ``` 通过调用 refreshTree 方法,可以重新获取新的数据,并将其赋值给 treeData 数组,从而刷新 el-tree 的显示。 ### 回答2: 组件 el-tree 刷新,可以通过改变数据源来实现el-tree是基于树形结构的组件,它通过props来接收数据源。当数据源改变时,el-tree会自动重新渲染,并实现刷新效果。 在Vue中,可以使用响应式数据实现数据源的改变。当需要刷新el-tree时,可以通过改变组件绑定的数据的值来触发组件的重新渲染。 首先,在组件的data中定义一个树形结构的数据treeData,作为el-tree数据源。假设初始化时treeData的值为[{label:'节点1'}]。 然后,在需要触发刷新的地方,可以通过methods或计算属性来改变treeData的值。例如,可以在methods中定义一个refreshTree的方法,当点击刷新按钮时调用该方法。refreshTree方法可以通过改变treeData的值来实现刷新效果。 例如,在refreshTree方法中,可以将treeData的值重新赋为[{label:'节点1'},{label:'节点2'}]。这样,当调用refreshTree方法时,el-tree组件会重新渲染,并显示新的节点。 最后,在组件的模板中,绑定treeData到el-tree数据源上。使用v-bind指令将treeData的值作为数据传递给el-tree组件。 <el-tree :data="treeData"></el-tree> 这样,当调用refreshTree方法时,el-tree组件会重新渲染,并显示新的节点,完成了刷新效果。 ### 回答3: 组件 el-tree 提供了两种刷新方式:通过父子组件通信刷新和调用方法刷新。 1. 通过父子组件通信刷新: 在父组件中,可以通过 v-if 或者 :key 的方式对 el-tree 组件进行刷新。当需要刷新时,可以修改 v-if 或者 :key 的值,强制重新渲染 el-tree 组件,从而实现刷新效果。 2. 调用方法刷新el-tree 提供了 refresh 方法可以手动触发刷新。具体使用方式如下: import { ref } from 'vue'; // 在父组件中,先创建一个 ref 引用 const treeRef = ref(null); // 在 el-tree 组件上绑定 ref 引用 <el-tree ref="treeRef"></el-tree> // 在需要刷新的时候,调用 refresh 方法刷新 treeRef.value.refresh(); 通过这种方式,可以在父组件中通过 ref 引用调用 el-tree 组件的方法刷新视图。 需要注意的是,刷新 el-tree 组件时,要先确保数据源已经更新。可以通过修改数据源,再进行刷新操作,保证视图与最新的数据保持一致。 总之,组件 el-tree 提供了两种刷新方式,可以根据具体场景选择使用哪种方式进行刷新操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值