Vue2 ElementUI Tree 拖动目标节点能否被放置及获取放置位置
一、背景:需求只允许拖动节点的先后顺序,不允许跨层级
二、代码及相关解释
<template><el-treeref="tree":data="data"node-key="id"draggablehighlight-current:allow-drop="allowDrop"@node-drop="drapNode"></el-tree>
</template>
<script>
export default {data () {return {data: []}},methods: {allowDrop (draggingNode, dropNode, type) { //只允许拖动节点调整与兄弟节点的前后顺序return dropNode.data[type==='inner'?'id':'parentId']===draggingNode.data.parentId;},drapNode (draggingNode, dropNode, dropType) { //只有当节点完成拖动时,dropType才是正确的拖动节点与目标节点的关系let list = this.$refs.tree.getNode(dropNode.data[dropType==='inner'?'id':'parentId']).data.children, index = list.findIndex(li => li.id===draggingNode.data.id); //list:完成拖动后的兄弟节点;index:拖动后是父节点的第几个子元素//....操作代码,成功后刷新树}}
}
</script>