element 下拉框联动_element Ui的级联选择器 任意一级选中下拉框自动关闭

v-model="value"

clearable

placeholder="请选择"

ref="cascaderHandle"

:options="searchOptions"

:disabled="disabled"

filterable

:props="{ checkStrictly: true, expandTrigger: 'hover' }"

:before-filter="beforeFilter"

@focus="focus"

@blur="blur">

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('/')

}

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 element-ui 中,可以通过 `cascader` 组件实现下框的联动。以下是一个示例代码片段,实现了两个下框的二级联动: ``` <template> <div> <el-cascader v-model="selectedCities" :options="cities" @change="handleCityChange" clearable ></el-cascader> <el-cascader v-model="selectedDistricts" :options="districts" :show-all-levels="false" clearable ></el-cascader> </div> </template> <script> export default { data() { return { cities: [ { value: 'beijing', label: '北京', children: [ { value: 'dongcheng', label: '东城', }, { value: 'xicheng', label: '西城', }, ], }, { value: 'shanghai', label: '上海', children: [ { value: 'pudong', label: '浦东', }, { value: 'minhang', label: '闵行', }, ], }, ], districts: [], selectedCities: [], selectedDistricts: [], }; }, methods: { handleCityChange(value) { const city = this.cities.find((c) => c.value === value[0]); if (city) { this.districts = city.children; } else { this.districts = []; } this.selectedDistricts = []; }, }, }; </script> ``` 在上述代码中,我们使用了两个 `el-cascader` 组件,第一个用于选择城市,第二个用于选择区县。当城市选择发生变化时,我们根据所选城市的子节点来更新区县下框的选项,并将其值清空,以避免用户选择错误的区县。 ### 回答2: element是一款基于Vue.js的UI组件库,提供了一系列的常用组件。其中,element中的select组件支持二级联动功能。下面我将详细解释如何使用element-ui实现select组件的二级联动。 首先,我们需要引入element-ui的select组件和option组件,并在Vue实例中注册这两个组件。 在template中,我们需要使用el-select和el-option标签来构建下框。el-select用于显示下框,el-option用于显示下框的选项。 二级联动的实现思路是,根据第一个下框的选项,动态生成第二个下框的选项。我们可以通过监听第一个下框的值的变化,动态更新第二个下框的选项。具体实现如下: 1. 在data中定义需要的数据,包括第一个下框和第二个下框的选项数据。 2. 在template中,使用el-select标签构建第一个下框,并绑定一个v-model,用来获取选中的值。 3. 监听第一个下框的值的变化,使用watch选项,在回调函数中根据选中的值动态生成第二个下框的选项。 4. 在template中,使用el-select标签构建第二个下框,并绑定一个v-model,用来获取选中的值。 通过以上步骤,我们可以实现element-ui select组件的二级联动。当第一个下框的值改变时,第二个下框的选项也会相应改变。 需要注意的是,我们可以根据实际需求进行修改和扩展,例如三级联动、四级联动等,只需要在第三个、第四个下框中添加相应的监听和选项即可。 希望以上回答能帮助到您,如有其他问题,欢迎继续提问。 ### 回答3: element 也是一个流行的前端 UI 框架,它提供了许多实用的组件,其中包括 select 下框。而在 element 的 select 中实现二级联动可以通过监听第一个下框的变化来动态修改第二个下框的选项。 首先,在 Vue 的实例中,我们需要定义两个变量,例如 province 和 city,分别用来保存第一级和第二级联动的选项。然后,我们在模板中使用 element 的 select 组件,并绑定相应的变量。 在第一个下框中,我们需要设定一个监听函数,例如 handleChangeProvince,当选择了某一个省份时,该函数会被触发。在该函数中,我们可以根据选择的省份来更新第二个下框的选项,例如将 city 设为该省份所对应的城市列表。 实现这一过程的关键在于如何将第一个下框的选项和第二个下框的选项进行关。一种常见的做法是通过一个对象的键值对来表示对应关系,例如一个 provinces 对象保存了省份和城市的对应关系,其中键表示省份,值表示对应的城市列表。当选择了某一个省份时,我们可以通过 provinces[province] 来获取该省份所对应的城市列表。 最后,我们将更新后的城市列表赋给第二个下框的选项,这样就实现了二级联动。需要注意的是,当再次选择第一个下框时,第二个下框的选项也需要更新,以保证联动效果。 总之,通过利用 element 的 select 组件和 Vue 的监听函数,我们可以轻松实现二级联动的下框。这样用户可以根据自己的需求选择对应的选项,提升了用户体验和交互性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值