赞
踩
vue2 使用slot-scope=“{node, data }"
<el-input placeholder="输入关键字进行过滤" v-model="filterText">
<el-tree :data="menus" show-checkbox node-key="id" :filter-node-method="filterNode">
<div slot-scope="{node, data }" class="custom-tree-node" >
<!--字数限制 (9)-->
<div class="nodelabel" :title="node.label">{{ node.label | ellipsis(9)}}</div>
<div v-if="data.num>0">({{data.num}})</div>
</div>
</el-tree>
补充:设置字数限制(可通过js过滤和css样式)
//js
filters: {
/**树节点长度过滤器 */
ellipsis(val, len) {
if (!val) return "";
val = val.toString();
if (val.length > len) {
return val.slice(0, len) + "...";
}
return val;
},
}
.nodelabel{
width: 100px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
vue3 使用 #default=“{node, data }"
<el-input placeholder="输入关键字进行过滤" v-model="filterText">
<el-tree :filter-node-method="filterNode" ref="treeRef" class="datatree"
:data="tree"
>
<template #default="{ node }">
<span class="nodelabel" :title="node.label">{{ node.label }}</span
>
</template>
</el-tree>
filterNode(value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
}
const filterText = ref("");
const treeRef = ref(null);
const filterNode = (query, node) => {
if (!query) return true;
return node.label.includes(query);
};
//监听
watch(filterText, (val) => {
treeRef.value.filter(val);
});
···
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。