这样添加回和原有箭头图标冲突,如何解决
时间: 2024-04-13 18:28:58 浏览: 7
如果您想要保留原有的箭头图标,并且在点击箭头图标时触发 `node-click` 事件,您可以使用以下方法来解决冲突:
首先,将箭头图标包裹在一个容器中,并在容器上添加 `@click` 事件监听。然后,通过事件冒泡机制,判断点击的是箭头图标还是容器本身,从而触发相应的事件。
以下是修改后的代码示例:
```html
<el-tree
:data="treeData"
:expand-on-click-node="false"
@node-click="handleNodeClick"
>
<span slot-scope="{ node, data }">
<span class="el-tree-node__expand-icon-container" @click="handleExpandIconClick(node, data)">
<i class="el-icon-arrow-right"></i>
</span>
</span>
</el-tree>
```
```javascript
methods: {
handleExpandIconClick(node, data) {
// 判断点击的是箭头图标还是容器本身
if (event.target.classList.contains('el-icon-arrow-right')) {
// 处理箭头图标的点击事件
console.log('Arrow icon clicked:', node, data);
} else {
// 处理容器的点击事件
console.log('Container clicked:', node, data);
// 触发 node-click 事件
this.$emit('node-click', node, data);
}
},
handleNodeClick(nodeData) {
// 处理节点点击事件的逻辑
console.log('Node clicked:', nodeData);
}
}
```
在上面的代码中,我们将箭头图标包裹在一个容器 `<span class="el-tree-node__expand-icon-container">` 中,并在容器上添加了 `@click` 事件监听。在 `handleExpandIconClick` 方法中,我们通过判断 `event.target` 的类名来确定点击的是箭头图标还是容器本身,并分别处理相应的逻辑。如果点击的是容器本身,则触发 `node-click` 事件,否则只处理箭头图标的点击事件。
这样,您就可以在保留原有箭头图标的同时,通过点击箭头图标触发 `node-click` 事件,并执行相应的处理逻辑。