最近項目遇到一個樹形結構數據業務場景如下:
前期版本中僅需要展示分類樹(由專門單獨的接口返回),具體分類下數據由單獨的表格展示(有另外一個接口返回,可根據分類id篩選),隨着需求迭代設計,需要在分類樹中展示數據,對此,在不修改分類接口的前提下,新增接口獲取數據,動態添加到分類樹節點上。為此利用element->tree組件節點API實現。
//template
<template> <el-tree ref="tree" :data="treeData" node-key="id" default-expand-all check-strictly @node-click="nodeClick" @check="check" :expand-on-click-node="true"> <span slot-scope="{ data }"> <span class="pr10">{{ data.name }}</span> </span> </el-tree> </template>
定義在點擊節點時加載子節點數據,利用updateKeyChildren:
export default { name:'component', data(){ return { treeData:[{ "children": [ { "children": [ { "children": [ { "children": [], "name": "第四層", "id": 5 }, { "children": [], "name": "添加層級", "id": 51 }, { "children": [], "name": "ss", "id": 75 } ], "name": "第三層", "id": 3 } ], "name": "第二層", "id": 2 } ], "name": "系統", "id": 1 }] } }, methods:{ //加載標簽數據 async nodeClick(data,node){ if (node.level == 4 && !data.children) { let { result } = await this.Api.getData(); if (result && result.length > 0) { this.$nextTick(() => { this.$refs['tree'].updateKeyChildren(data.id,result); }) } } } } }
根據節點key設置選中狀態:setCheckedKeys
根據節點nodes設置選中狀態:setCheckedNodes
獲取樹選中狀態節點數據數組:getCheckedNodes
獲取樹選中狀態節點key值數組:getCheckedKeys