<template>
<el-select clearable ref="selectTree" v-model="selectValue" :placeholder="placeholder" popper-class="popperTreeSelect">
<el-option
v-for="item in tree"
:label="item[label]"
:value="item[nodeKey]"
:key="item[nodeKey]"
style="display: none;"/>
<el-tree
ref="tree"
:data="tree"
:node-key="nodeKey"
:props="{children:children,label:label}"
@node-click="handleNodeClick"
>
</el-tree>
</el-select>
</template>
<script>
export default {
name: "selectTree",
model:{
prop:'value',
event:'input'
},
props:{
value:{
type:[String,Number],
default:''
},
tree:{
type:Array,
default: function () {
return []
}
},
children:{
type:String,
default:'children'
},
label:{
type:String,
default:'label'
},
placeholder:{
type:String,
default:'请选择'
},
nodeKey:{
type:String,
default:'id'
}
},
data () {
return {
selectValue:''
}
},
methods:{
handleNodeClick(data, node, b){
this.$emit('input', data.id);
this.$emit('change', data)
this.selectValue = data.name;
this.$refs.selectTree.blur();
},
getValueName(arr){
arr.map(item => {
if(item[this.nodeKey] == this.value){
console.log( item[this.label])
this.selectValue = item[this.label]
return false
}
if(item[this.children] && item[this.children].length > 0){
this.getValueName(item[this.children])
}
})
}
},
watch:{
tree:{
handler(newDate){
this.getValueName(newDate)
},
immediate:true
}
}
}
</script>
<style scoped>
</style>
vue自定义实现树状下拉选择器
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 根据实际需要自定义的一款下拉列表组件 效果: 安装: npm i react-native-select-dial...
- 前言 在使用ElementUI过程中,表格的使用占了很大一部分,但是使用起来总感觉不方便,而且部分想要的功能也没有...
- 自定义spinner 自定义spinner,使用AppCompatTextView+PopupWindow 实现下...
- 一、按照map一个列进行分组,返回map 使用方法 原始数据 二、按照map一个列进行分组,形成自定义树,返回树状...