1 <el-tree-select style="width: 100%" :load="loadNode" :default-expanded-keys="state.defaultExpandedKeys" 2 :props="state.treePathProps" value-key="id" node-key="id" placeholder="请选择" v-model="state.path" 3 :render-after-expand="false" lazy />
js部分
treeSelectedData: [],
path: '',
defaultExpandedKeys: [],
treePathProps: {
value: 'id',
label: 'name',
children: 'children',
isLeaf: function (data) {
const { dir } = data;
if (dir) {
return false;
} else {
return true;
}
},
},
function loadNode(node, resolve) {
// node其实是需要展开树节点,但是第一次的node是个无用的数据,可以认为这个node是element给我们创建的,判断的话,就是level等于0
if (node && node.level == 0) {
getDeptData(0, resolve);
} else {
getDeptData(node, resolve);
}
}
// 从后端获取数据列表
async function getDeptData(node, resolve) {
// 获取后台数据
return resolve(await dataWarehousingService.getDir(node?.data?.path || ""))
}
属性解读:
v-model id值。只要这个id值在树里能匹配上,就能够顺利回显出其label值。
lazy 开启懒加载
load 加载子树数据的方法
value-key 作为 value 唯一标识的键名。简单说就是主键,根据自己后端返回的字段修改
node-key 每个树节点用来作为唯一标识的属性。简单理解为树节点的主键,同value-key
props 配置选项。一般配置value和label的属性值
show-checkbox 开启复选框
check-strictly 可选择任一级别
highlight-current 选中高亮显示
default-expanded-keys 默认展开节点的key数组(懒加载时用于数据回显,这个属性非常关键)