element Ui的级联选择器 任意一级选中下拉框自动关闭
封装成一个子组件
<template> <el-cascader v-model="value" clearable placeholder="请选择" ref="cascaderHandle" :options="searchOptions" :disabled="disabled" filterable :props="{ checkStrictly: true, expandTrigger: 'hover' }" :before-filter="beforeFilter" @focus="focus" @blur="blur"> </el-cascader> </template> <script> export default { name: 'cascaderInput', model: { prop: 'data', event: 'change' }, props: { data: { type: Array, default: '' }, options: { type: Array, default: () => { return [] } }, disabled:{ type: Boolean, default: false } }, data () { return { keyword: this.data.join('/'), value: this.data, flag: 0 } }, computed: { search() { const k = this.keyword let result = [{label: k, value: k}] if(this.isJsonString(k)) { result[0] = {label: JSON.parse(k).label || k, value: k} } return result }, searchOptions() { return this.options.concat(this.search) }, }, methods: { isJsonString(str) { let result = true try{ JSON.parse(str) }catch(erro){ result = false } return result }, beforeFilter(keyword) { this.keyword = keyword this.value = [ keyword ] }, focus(e) { (this.flag == 0) && (e.target.addEventListener('keyup', this.keyup, false)); this.flag++; }, blur(e) { }, keyup(e) { let value = e.target.value if(value.length == 0) { /*this.keyword = '无';*/ this.value = [] } }, }, watch: { value: { deep: true, handler(v,e) { this.$emit('change', v) if(this.$refs.cascaderHandle) { var children = this.$refs.cascaderHandle.getCheckedNodes(); // if(children[0].children.length < 1){ //判断有没有下级 this.$refs.cascaderHandle.dropDownVisible = false; //监听值发生变化就关闭它 // } } } }, data: { deep: true, handler(v) { if(v.length == 1) this.keyword = v.join('/'); this.value = Array.isArray(v) ? v : v.split('/') } } } } </script>
相关推荐
wikiwater 2020-10-27
IdeaElements 2020-08-19
Sophiego 2020-08-16
Kakoola 2020-08-01
Kakoola 2020-07-29
ELEMENTS爱乐冬雨 2020-07-18
ELEMENTS爱乐小超 2020-07-04
ELEMENTS爱乐小超 2020-07-04
Kakoola 2020-06-28
Feastaw 2020-06-18
Wmeng0 2020-06-14
ELEMENTS爱乐冬雨 2020-06-14
云之高水之远 2020-06-14
哈喽elements 2020-06-14
Feastaw 2020-06-11