el-cascader只传子级的id
时间: 2023-10-13 09:23:55 浏览: 104
el-cascader 组件是一个级联选择器,它的 value 值是一个数组,包含所有已选中的节点的值。如果只想传子级的 id,那么可以在 el-cascader 的 change 事件中处理一下,从最后一个选中的节点开始,逐级获取子级的 id,直到根节点为止。
以下是一个示例代码:
```html
<template>
<el-cascader
v-model="selectedIds"
:options="options"
@change="handleChange"
:props="{ value: 'id', label: 'name' }"
></el-cascader>
</template>
<script>
export default {
data() {
return {
options: [
{
id: 1,
name: '节点 1',
children: [
{
id: 2,
name: '节点 1-1',
children: [
{
id: 3,
name: '节点 1-1-1'
},
{
id: 4,
name: '节点 1-1-2'
}
]
},
{
id: 5,
name: '节点 1-2'
}
]
},
{
id: 6,
name: '节点 2',
children: [
{
id: 7,
name: '节点 2-1'
},
{
id: 8,
name: '节点 2-2'
}
]
}
],
selectedIds: []
}
},
methods: {
handleChange(selectedValues) {
const selectedIds = []
let options = this.options
for (let i = 0; i < selectedValues.length; i++) {
const selectedValue = selectedValues[i]
const selectedOption = options.find(option => option.id === selectedValue)
selectedIds.push(selectedOption.id)
options = selectedOption.children
}
this.$emit('select', selectedIds)
}
}
}
</script>
```
在上面的示例中,我们在 el-cascader 的 change 事件中获取所有已选择节点的值(即 selectedValues),然后逐个查找对应的选项对象,并将其 id 添加到 selectedIds 数组中。最后,我们将 selectedIds 作为参数触发一个自定义的 select 事件,供父组件使用。
阅读全文