当前位置:首页 > VUE

vue实现picker联动

2026-01-17 11:14:35VUE

Vue 实现 Picker 联动

在 Vue 中实现 Picker 联动通常涉及多个选择器之间的数据依赖关系。以下是一种常见的实现方式:

数据准备

定义数据模型,包括所有可能的选择项和当前选中的值:

data() {
  return {
    provinces: [],
    cities: [],
    districts: [],
    selectedProvince: '',
    selectedCity: '',
    selectedDistrict: ''
  }
}

初始化数据

createdmounted 钩子中加载初始数据:

async mounted() {
  const res = await axios.get('/api/provinces')
  this.provinces = res.data
}

监听变化

使用 watch 监听选择变化并更新下级数据:

watch: {
  selectedProvince(newVal) {
    if (newVal) {
      this.fetchCities(newVal)
      this.selectedCity = ''
      this.selectedDistrict = ''
    }
  },
  selectedCity(newVal) {
    if (newVal) {
      this.fetchDistricts(newVal)
      this.selectedDistrict = ''
    }
  }
}

获取下级数据

定义获取下级数据的方法:

methods: {
  async fetchCities(provinceId) {
    const res = await axios.get(`/api/cities?province=${provinceId}`)
    this.cities = res.data
  },
  async fetchDistricts(cityId) {
    const res = await axios.get(`/api/districts?city=${cityId}`)
    this.districts = res.data
  }
}

模板部分

在模板中使用 select 或自定义 Picker 组件:

<select v-model="selectedProvince">
  <option value="">请选择省份</option>
  <option v-for="item in provinces" :value="item.id">{{ item.name }}</option>
</select>

<select v-model="selectedCity" :disabled="!selectedProvince">
  <option value="">请选择城市</option>
  <option v-for="item in cities" :value="item.id">{{ item.name }}</option>
</select>

<select v-model="selectedDistrict" :disabled="!selectedCity">
  <option value="">请选择区县</option>
  <option v-for="item in districts" :value="item.id">{{ item.name }}</option>
</select>

使用第三方组件库

如果使用 Element UI 等组件库,实现方式类似:

<el-cascader
  :options="options"
  v-model="selectedValues"
  @change="handleChange"
></el-cascader>

移动端 Picker 实现

对于移动端,可以使用 vant 的 Picker 组件:

<van-picker
  title="请选择"
  show-toolbar
  :columns="columns"
  @confirm="onConfirm"
  @cancel="onCancel"
/>

性能优化

对于大数据量的 Picker,建议:

  • 实现懒加载
  • 添加防抖处理
  • 使用虚拟滚动

以上方法可以根据具体需求进行调整和组合使用,实现不同场景下的 Picker 联动效果。

vue实现picker联动

标签: vuepicker
分享给朋友:

相关文章

vue实现中台

vue实现中台

Vue 实现中台系统的关键步骤 技术选型与基础搭建 使用 Vue 3(Composition API)或 Vue 2(Options API)作为前端框架,搭配 Vue Router 实现路由管理,V…

vue实现选区创建

vue实现选区创建

Vue 实现选区创建的方法 在 Vue 中实现选区创建通常涉及 DOM 操作和事件处理。以下是几种常见的方法: 使用原生 DOM API 通过 window.getSelection() 和 Ra…

vue实现录播播放

vue实现录播播放

Vue 实现录播播放 使用 video.js 实现 安装 video.js 和相关的 Vue 适配器: npm install video.js @videojs-player/vue 在 Vue…

前端多线程实现vue

前端多线程实现vue

前端多线程与Vue的结合 在Vue中实现多线程通常通过Web Worker技术完成。Web Worker允许在后台线程中运行脚本,避免阻塞主线程,适合处理计算密集型任务。 使用Web Worker…

vue设计与实现目录

vue设计与实现目录

以下是《Vue设计与实现》一书的典型目录结构(根据常见技术书籍及Vue核心内容整理): 响应式系统 响应式数据的基本原理 依赖收集与触发更新 实现简易响应式系统 Proxy与Reflec…

vue实现收起展开面板

vue实现收起展开面板

实现收起展开面板的方法 在Vue中实现收起展开面板功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-show或v-if控制显示隐藏 利用Vue的指令可以轻松实现面板的展开和收起:…