el-tree按照用户勾选的顺序记录节点
在 Element UI 的 el-tree 组件中,默认情况下获取的选中节点数组是没有顺序的。如果你需要按照用户勾选的顺序记录节点,可以通过以下方法实现:
html
<template>
<el-tree
ref="tree"
:data="data"
show-checkbox
node-key="id"
@check-change="handleCheckChange"
></el-tree>
<div>勾选顺序: {{ checkedOrder.join(', ') }}</div>
</template>
<script>
export default {
data() {
return {
data: [
// 你的树数据
],
checkedOrder: [], // 存储勾选顺序
checkedSet: new Set() // 用于快速判断节点是否已记录
};
},
methods: {
handleCheckChange(node, checked) {
if (checked) {
// 如果是勾选且尚未记录
if (!this.checkedSet.has(node.id)) {
this.checkedOrder.push(node.id);
this.checkedSet.add(node.id);
}
} else {
// 如果是取消勾选
const index = this.checkedOrder.indexOf(node.id);
if (index > -1) {
this.checkedOrder.splice(index, 1);
this.checkedSet.delete(node.id);
}
}
},
getCheckedNodesInOrder() {
// 按照勾选顺序获取节点
return this.checkedOrder.map(id => {
return this.$refs.tree.getNode(id).data;
});
}
}
};
</script>