当前位置:首页 > VUE

vue实现picker联动

2026-02-18 03:51:43VUE

Vue 实现 Picker 联动

数据准备

定义联动数据源,通常为嵌套结构。例如三级联动可使用如下格式:

data() {
  return {
    options: [
      {
        label: '省份',
        children: [
          { label: '城市', children: [{ label: '区县' }] }
        ]
      }
    ],
    selectedValues: []
  }
}

组件选择

推荐使用现成组件库:

  • Element UI 的 Cascader 级联选择器
  • Vant 的 Picker 组件(移动端友好)
  • Ant Design Vue 的 Cascader

自定义实现

若需手动实现,核心逻辑如下:

vue实现picker联动

模板结构

<select v-model="selectedProvince" @change="handleProvinceChange">
  <option v-for="item in provinces" :value="item.id">{{ item.name }}</option>
</select>

<select v-model="selectedCity" @change="handleCityChange">
  <option v-for="item in cities" :value="item.id">{{ item.name }}</option>
</select>

<select v-model="selectedDistrict">
  <option v-for="item in districts" :value="item.id">{{ item.name }}</option>
</select>

数据处理逻辑

vue实现picker联动

methods: {
  handleProvinceChange() {
    this.cities = getCitiesByProvince(this.selectedProvince)
    this.selectedCity = null
    this.districts = []
  },

  handleCityChange() {
    this.districts = getDistrictsByCity(this.selectedCity)
  }
}

动态加载

对于大数据量场景可采用异步加载:

async loadChildrenOptions(selectedOption) {
  const res = await api.getChildren(selectedOption.id)
  selectedOption.children = res.data
}

表单绑定

使用 v-model 进行双向绑定:

data() {
  return {
    form: {
      region: []
    }
  }
}

注意事项

  • 深度监听数据变化时使用 deep: true
  • 清空子选项时应重置下级选择器
  • 移动端需考虑触摸交互体验
  • 大数据量建议使用虚拟滚动优化性能

完整示例(Vant Picker)

<template>
  <van-picker
    :columns="columns"
    @change="onChange"
    v-model="selectedValues"
  />
</template>

<script>
export default {
  data() {
    return {
      columns: [
        {
          values: ['省份1', '省份2'],
          children: [
            { values: ['城市1-1', '城市1-2'] },
            { values: ['城市2-1', '城市2-2'] }
          ]
        }
      ],
      selectedValues: []
    }
  },
  methods: {
    onChange(picker, values) {
      picker.setColumnValues(2, ['区县数据'])
    }
  }
}
</script>

标签: vuepicker
分享给朋友:

相关文章

vue实现影院

vue实现影院

Vue实现影院功能的基本思路 使用Vue框架开发影院功能需要结合前端组件化开发、状态管理以及后端API交互。以下是关键实现步骤: 影院页面布局设计 影院页面通常分为顶部导航栏、影院列表区域和底部导航…

vue实现 treegrid

vue实现 treegrid

Vue 实现 TreeGrid 的方法 使用现成组件库 Element UI、Ant Design Vue 等流行组件库提供了现成的 TreeTable/TreeGrid 组件,可直接使用。 Ele…

vue实现评价

vue实现评价

Vue实现评价功能 数据绑定与双向绑定 Vue的核心特性是数据绑定和双向绑定,通过v-model指令可以轻松实现表单输入与应用状态之间的双向绑定。在评价功能中,可以使用v-model绑定评论文本和评分…

vue实现门户

vue实现门户

Vue 实现门户网站的关键步骤 搭建基础框架 使用 Vue CLI 或 Vite 初始化项目,安装 Vue Router 管理多页面路由。门户通常需要响应式布局,可引入 UI 库如 Element P…

vue实现搜索查询

vue实现搜索查询

Vue 实现搜索查询的方法 双向绑定实现实时搜索 在Vue中可以通过v-model绑定输入框的值,结合计算属性或watch监听输入变化实现实时搜索。 <template> <i…

vue实现天猫

vue实现天猫

Vue实现天猫首页功能 使用Vue.js实现类似天猫的电商首页需要结合多个技术点,包括组件化开发、路由管理、状态管理、API调用等。以下是关键实现步骤: 项目初始化 创建Vue项目并安装必要依赖:…