我想在vue2中的一个el-tree组件里,添加点击clickbox触发alert(11)的方法,同时要求在点击clickbox的时候,返回选中子节点的数组,请给出代码实例
时间: 2024-05-04 19:16:53 浏览: 124
好的,以下是示例代码:
```html
<template>
<el-tree
:data="data"
show-checkbox
node-key="id"
:props="defaultProps"
@check-change="handleCheckChange"
:render-content="renderContent"
></el-tree>
</template>
<script>
export default {
data() {
return {
data: [
{
id: 1,
label: "一级 1",
children: [
{
id: 4,
label: "二级 1-1",
children: [
{
id: 9,
label: "三级 1-1-1",
},
{
id: 10,
label: "三级 1-1-2",
},
],
},
{
id: 5,
label: "二级 1-2",
},
],
},
{
id: 2,
label: "一级 2",
children: [
{
id: 6,
label: "二级 2-1",
},
{
id: 7,
label: "二级 2-2",
},
],
},
{
id: 3,
label: "一级 3",
children: [
{
id: 8,
label: "二级 3-1",
},
],
},
],
defaultProps: {
children: "children",
label: "label",
},
};
},
methods: {
handleCheckChange(data, checkedNodes) {
console.log("选中节点:", checkedNodes);
},
renderContent(h, { node, data }) {
return (
<span class="custom-tree-node">
<el-checkbox
class="custom-checkbox"
v-model={data.checked}
indeterminate={data.indeterminate}
on-click={(e) => {
e.stopPropagation();
}}
></el-checkbox>
<span class="custom-text">{node.label}</span>
<span
class="custom-clickbox"
on-click={(e) => {
e.stopPropagation();
alert(11);
}}
></span>
</span>
);
},
},
};
</script>
<style scoped>
.custom-tree-node {
display: inline-block;
width: 100%;
}
.custom-checkbox {
margin-right: 8px;
}
.custom-text {
margin-right: 8px;
}
.custom-clickbox {
display: inline-block;
width: 16px;
height: 16px;
background-color: #ccc;
cursor: pointer;
}
</style>
```
在这个示例中,我们使用了 `el-tree` 组件来展示树形结构,同时设置了 `show-checkbox` 属性来开启复选框选择模式。在 `renderContent` 方法中,我们自定义了节点的内容,添加了一个点击触发 `alert(11)` 的小方块,并且使用 `v-model` 绑定了复选框的选中状态。
在 `handleCheckChange` 方法中,我们可以获取到选中的节点数组,即 `checkedNodes`,可以根据需要进行处理。
需要注意的是,为了防止点击事件冒泡到复选框上触发选中操作,我们在点击事件中使用 `e.stopPropagation()` 来阻止事件冒泡。
阅读全文