vxe下拉容器实现可填可选

本文介绍了如何在VueVXE组件的下拉容器中实现输入框的可填可选功能,通过`v-model`绑定输入值,自定义插槽添加下拉箭头,利用`togglePanel()`方法控制下拉面板的开关。
摘要由CSDN通过智能技术生成

​ 在vxe的功能组件中,输入框input只能用于填写,而下拉容器只能选择数据。然而,在下拉容器中,其实也存在输入框input,那么,基于下拉容器的input,就可以实现可填可选的效果。

一、效果

直接输入:
image.png
下拉选项
image.png

二、实现


<template>
  <div>
    <vxe-pulldown ref="pulldownRef">
      <template #default>
        <vxe-input v-model="inputValue" style="width: 100px">
          <template #suffix>
            <i class="vxe-icon-arrow-down" @click="selectData()"></i>
          </template>
        </vxe-input>
      </template>
      <template #dropdown>
        <div class="my-dropdown1" >
          <div class="list-item1" v-for="item in selectList"
            :key="item.value" @click="selectEvent(item.value)">
            <span>{{ item.label }}</span>
          </div>
        </div>
      </template>
    </vxe-pulldown>
  </div>
</template>


<script>
  export default {
    name: "inputOrSelect",
    data() {
      return {
        inputValue:undefined,
        selectList:[
          { label: '选项1', value: '选项1' },
          { label: '选项2', value: '选项2' },
          { label: '选项3', value: '选项3' },
          { label: '选项4', value: '选项4' }
        ]
      }
    },
    methods: {
      selectData() {
        console.log(this.$refs.pulldownRef)
        //切换下拉面板
        this.$refs.pulldownRef.togglePanel()
        //this.$refs.pulldownRef[0].togglePanel()
      },
      selectEvent(val) {
        console.log(val)
        this.inputValue = val
        //切换下拉面板
        this.$refs.pulldownRef.togglePanel()
        //this.$refs.pulldownRef[0].togglePanel()
      }
    }
  }
</script>

<style scoped>

</style>

  1. 下拉容器使用ref绑定组件,ref=“pulldownRef”
  2. 下拉容器的输入框绑定输入值inputValue,使用自定义插槽添加向下箭头的后缀图标,并绑定事件selectData()用于开启下拉选项
  3. 下拉容器利用div标签和v-for用于显示下拉选项,在div标签上绑定selectEvent()事件用于选中下拉数据后的回调
  4. 在下拉容器的API中togglePanel()用于切换下拉面板,所以在selectData()使用togglePanel()打开下拉面板,而在selectEvent()使用togglePanel()关闭下拉面板

三、注意

​ 在利用this.$refs.pulldownRef时获取到的数据可能直接就是需要的下拉容器组件,但是有时返回的是一个集合,这就需要额外判断使用的是哪一个下拉容器了。例如,使用console.log(this.$refs.pulldownRef)打印:image.png此时如果选择第一个下拉容器则使用this.$refs.pulldownRef[0].togglePanel()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

€云起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值