上一篇文章贴了完整的el-tree代码,这一篇详细的描述一下如何在项目中使用
传送门,el-tree完整代码,有完整的代码
先从这一段代码开始,对应的是左侧的树区域
<el-input
placeholder="输入关键字进行过滤"
v-model="filterText"
></el-input>
input的v-model绑的值在data中定义: filterText: “”, //树过滤
在watch中监听,筛选的值会不断发生变化,所以要监听值的变化,调用树的filter方法,用this.$点出来。
watch: { filterText(val) { this.$(val); }, },
(filter方法可以查看文档,对树节点进行筛选操作,该参数会在filter-node-method中作为第一个参数)
**
data绑的值用来展示数据,
props用来配置选项(树的子节点,树节点文本展示,叶子节点),
node-key是树结点唯一标识,整棵树唯一的(这个就相当于v-for循环时,唯一的key),
accordion是否每次只打开一个同级树节点展开,default-expand-all默认展开所有节点,这两个可以依据个人情况选择,
:filter-node-method 对树节点进行筛选时执行的方法,用这个方法筛选Function(value, data, node)**
ref要有,过滤的时候要用到,ref可以拿到树的所有属性和方法
@node-click节点被点击时的事件
data() {
return {
filterText: "", //树过滤
treeData: [], //树数据
defaultProps: {
//树形控件的属性绑定对象
children: "children", //设置通过children属性展示子节点信息
label: "title", //通过label设置树形节点文本展示
isLeaf: "leaf",
},
};
1、获取左侧树,形参id可以不写,我没有用到
created() {
();
},
//获取左侧树
async treeDataList(id) {
try {
const data = await burgetTree();//树接口已封装,可以按你自己调接口的方式写
= ;
// ("树数据", );
} catch (error) {
(error);
}
},
2、树过滤,接的第一个值就是filter方法中的val。方法里的代码基本上和其他文章里都一样,唯一一个要注意的点是这个是接口返回给你的字段,按自己项目的来、
//树过滤
filterNode(value, data) {
if (!value) return true;
return (value) !== -1;
},
3树节点点击事件,解释一下 .category_id 是项目名称下拉框,category_id对应的字段描述是按分类筛选,代码里没有展示,页面上还有一个下拉框,选择项目,选完之后展示对应的树数据。
//树节点点击,
handleNodeClick(data, node) {
// ("点击节点", data, node);
.category_id = ;
();
},
4、
// 树节点鼠标移入移出
mouseenter(data) {
this.$set(data, "show", true);
},
// 树节点鼠标移入移出
mouseleave(data) {
this.$set(data, "show", false);
},
//添加同级节点
append(node) {
= true;
.parent_id = ;
},
// 添加子级节点
appendChild(node) {
= true;
();
.parent_id = ;
},
// 编辑节点,调查看接口
async editNode(node) {
const data = await burgetFindProject({ id: });
// ('树节点详情', data);
if ( == 200) {
= ;
= true;
}
},
// 删除结点
deleteNode(node) {
this.$confirm("是否删除当前节点?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
burgetRemove({ id: }).then((res) => {
if ( == 200) {
this.$message.success("删除成功");
();
}
});
})
.catch((err) => err);
},
//添加、修改节点提交
submitNode() {
this.$refs.(async (valid) => {
if (!valid) return;
try {
if () {
var data = await burgetUpdate();
} else {
var data = await burgetAdd();
}
// ('添加树', data);
if ( == 200) {
this.$message.success("操作成功");
= false;
();
= { parent_id: "" };
}
} catch (error) {
(error);
}
});
},
//添加节点弹窗关闭
nodeClose() {
= { parent_id: "" };
= false;
},
还有缺的再补,暂时就这么多