<treeselect v-model="form.parentId" :options="columnList" :show-count="true" search-nested @select="selectHandle" :normalizer="normalizer" placeholder="选择上级栏目" noOptionsText="暂无可选项" noResultsText="暂无数据" noChildrenText="暂无子栏目" />排除自己
时间: 2023-07-02 17:12:03 浏览: 155
您的问题是关于一个 Vue 组件的实现,该组件是一个树形选择器,您想要在选择上级栏目时排除当前栏目,是吗?
如果是这样的话,您可以在组件的 options 中排除当前栏目,具体实现方法如下:
1. 在组件的 options 中添加一个名为 excludeId 的 prop,用来传递需要排除的栏目 id。
2. 在组件的 computed 中定义一个名为 filteredOptions 的属性,用来根据 excludeId 过滤 options。
3. 在组件的 template 中将 options 替换为 filteredOptions。
具体代码实现如下:
```vue
<template>
<treeselect v-model="form.parentId" :options="filteredOptions" :show-count="true" search-nested
@select="selectHandle" :normalizer="normalizer" placeholder="选择上级栏目" noOptionsText="暂无可选项"
noResultsText="暂无数据" noChildrenText="暂无子栏目" />
</template>
<script>
export default {
props: {
columnList: {
type: Array,
required: true
},
excludeId: {
type: Number,
default: 0
}
},
computed: {
filteredOptions() {
return this.filterOptions(this.columnList, this.excludeId);
}
},
methods: {
filterOptions(options, excludeId) {
return options.filter(option => option.id !== excludeId && (!option.children || option.children.length === 0 || this.filterOptions(option.children, excludeId).length > 0));
}
}
};
</script>
```
在使用该组件时,您只需要将当前栏目的 id 传递给 excludeId prop 即可,如下所示:
```html
<tree-select :columnList="columnList" :excludeId="currentColumnId" />
```
其中,currentColumnId 是当前栏目的 id。这样就能实现在选择上级栏目时排除当前栏目了。
阅读全文