Vant Cascader级联选择 实现省市区三级

Vant Cascader省市区数据太多,点一次掉一次子级数据 最近需求是 省市区县,有四级或更多级,数据实在是太多(四万多条数据),如果后端一次性返回,速度实在是太慢,十几秒后才返回,不太行,所以就新出了个接口。我用的 vant 的 Cascader 组件,封装成一个组件了,点击确定事件和取消事件用的父子事件。因为可能选择二级就完成了,也可能选择三级、四级,所以最下面加了个确定按钮,点击确定才算完成。因为之前省市区最多只有三级数据,总共不到四千条数据,所以接口返回的速度还好。:后端返回一级数据,点一下父级,掉一下接口获取子级数据。接口返回的第一级数据。 阅读详情
AI摘要

本文介绍了如何利用Vant框架中的Cascader组件,结合后端接口数据,实现省市区三级联动的选择功能。详细阐述了在Vue项目中引入Vant库、配置模板以及编写相关JS方法的过程,包括数据的动态加载和字段映射。

前面有一篇文章是介绍Vue + MintUI实现的省市区三级联动,今天介绍使用Vant框架中的Cascader来实现省市区三级联动。建议先搂一遍,官网介绍~~

 

有赞官网Cascader组件介绍:Vant 2 - Mobile UI Components built on Vue

本次实现的省市区三级联动,数据是通过后端接口获取,对应数据格式分享如下

省:

result: [
    {name: "山西省", code: "140000", childResources: null}
    {name: "内蒙古自治区", code: "150000", childResources: null}
    {name: "北京市", code: "110000", childResources: null}
    {name: "天津市", code: "120000", childResources: null}
    {name: "河北省", code: "130000", childResources: null}
]

市:

result:[
    {name: "晋城市", code: "140500", childResources: null}
    {name: "朔州市", code: "140600", childResources: null}
    {name: "晋中市", code: "140700", childResources: null}
    {name: "运城市", code: "140800", childResources: null}
    {name: "忻州市", code: "140900", childResources: null}
    {name: "临汾市", code: "141000", childResources: null}
    {name: "吕梁市", code: "141100", childResources: null}
    {name: "太原市", code: "140100", childResources: null}
    {name: "大同市", code: "140200", childResources: null}
    {name: "阳泉市", code: "140300", childResources: null}
]

 区、县:

result:[
    {name: "城区", code: "140502", childResources: null}
    {name: "沁水县", code: "140521", childResources: null}
    {name: "阳城县", code: "140522", childResources: null}
    {name: "陵川县", code: "140524", childResources: null}
    {name: "泽州县", code: "140525", childResources: null}
    {name: "高平市", code: "140581", childResources: null}
]

1、在index.js中引入Vant,并注册声明

import Vant from 'vant';
import 'vant/lib/index.css';
Vue.use(Vant);

2、页面使用(template)

<van-field v-model="accidentArea.value" label="地区" readonly placeholder="省市区三级选择"  @click="showAreaPop()">
        			<div slot="extra" style="width: 18px; height: 18px; padding-top: 3px;"><img width="18px" :src="icons.location" /></div>
        		</van-field>



<!--出险地区-->
<van-popup v-model="accidentArea.visible" round position="bottom" >
	<van-cascader
		class="cascader-options"
		v-model="accidentArea.cascaderValue"
		title="请选择出险地区"
		:options="accidentArea.options"
		@close="hideAreaPop"
		@change="onChangeAcidentArea"
		@finish="onFinishaAcidentArea"
		:field-names="{ text: 'name', value: 'code', children: 'childResources' }"
	/>
</van-popup>

3、对应JS方法

export default {
	data() {
		return {
			accidentArea : {
				value : '',			//显示的值
				cascaderValue : '',	//显示的值
				visible : false,	//是否显示
				options: []
			},
        }
    }
}


//显示出险地区
showAreaPop(){
	this.accidentArea.visible = true;
	if(this.accidentArea.options.length == 0){
		//省
		queryProvince({level:'',parentCode:""}).then(res =>{
			if(res.code == '0'){
				res.result.forEach(item => item.childResources = [])
				this.accidentArea.options = res.result;
			}
		})
	}
},
//关闭弹层
closeAreaPop(){
	this.accidentArea.visible = false;
},
// 选择完成,触发 finish事件
onFinishaAcidentArea({ selectedOptions }) {
	this.accidentArea.visible = false;
	this.accidentArea.value = selectedOptions.map((option) => option.name).join('/');
	this.params.accidentArea = selectedOptions.map((option) => option.code).join('_');
},
//选中项变化时触发 	出险地区
onChangeAcidentArea({ value, selectedOptions, tabIndex }){
	let level = tabIndex === 0 ? '01' : '02';
	queryAreas({level:level,parentCode:value}).then(res =>{
		if(res.code == '0'){
			//市
			if(tabIndex === 0){
				res.result.forEach(item => item.childResources = [])
				let index = this.accidentArea.options.findIndex(item =>item.code == value);
				this.accidentArea.options[index].childResources = res.result
			}else if(tabIndex === 1){
				let firstIndex = this.accidentArea.options.findIndex(item =>item.code == selectedOptions[0].code);		//省级 index
				let cities =  this.accidentArea.options[firstIndex].childResources	//所有城市
				let index = cities.findIndex(item =>item.code == value);	//市级 index
				cities[index].childResources = res.result
			}
		}
	})
}

逻辑感觉没啥可说得,field-names这个属性需要注意下,官网对于这个字段的解释通过 field-names 属性可以自定义 options 里的字段名称

意思就是如果后端返回的字段不符合你的预期字段,你可以通过这个属性重新定义下你需要展示的字段。

组件原先的名称是text,后台返回的字段是其他的。那就可以像官网一样,做一个映射的关系。将接口返回字段映射到text。

本次分享完毕~

vant中的Cascader 级联选择异步加载地区数据 vant中的Cascader 级联选择异步加载地区数据。 阅读详情

相关推荐

Vant Cascader异步加载省市区数据,我踩过的坑和最佳实践(Vue 3 + Vant 3.6.12)

本文详细解析了Vant Cascader组件在Vue 3项目中实现省市区异步加载时遇到的典型问题及解决方案。通过事件机制深度分析、实战代码示例和性能优化技巧,帮助开发者避免选择器意外关闭等常见陷阱,提升移动端H5项目的用户体验。特别适用于电商地址选择等需要多级联动的场景。

weixin_30920513的博客 271

Vant Cascader 级联选择使用 wx小程序

使用vant 级联选择的主要流程。

LKX_S的博客 5840

Vue Vant Cascader异步加载数据实战:从事件困惑到精准控制的省市区街道选择方案

本文深入解析Vue Vant Cascader组件在异步加载省市区街道数据时的实战技巧。针对级联选择中常见的事件困惑、面板意外关闭和数据不同步等问题,提供精准控制的事件处理方案和性能优化策略,帮助开发者高效实现多级联动选择功能。

weixin_42552410的博客 223

van-cascader 异步加载

van-cascader 异步加载数据

weixin_47541876的博客 2838

省市区三级联动【area.json】

省市区三级联动json列表,上传上来当做备份了,有需要的同学也可下载。

从零搭建ECG心电图仪:模拟前端电路设计与噪声对抗实战

在电子工程和生物医学信号处理领域,微弱信号的采集与放大是核心挑战。其基本原理在于利用高精度模拟电路,从强大的环境噪声中提取出有用的差分信号。这项技术的核心价值在于将理论上的传感器信号转化为稳定、可靠的可用数据,是连接物理世界与数字系统的关键桥梁。在医疗监护、工业传感和科学测量等场景中,高性能的模拟前端设计直接决定了整个系统的精度与可靠性。本文聚焦于生物电信号采集这一具体应用,深入探讨如何运用差分放大器、低通滤波器和陷波滤波器等经典模块,构建一个能够有效对抗工频干扰和接触噪声的实用电路,最终实现从人体体表清晰

weixin_30616969的博客 458

Vue Vant Cascader级联选择 异步加载地区数据 实现省市区街道...

此处需要着重说明的是,点击广东省的时候(tabIndex=0),触发的是onChange 事件,但是后续选择会触发onChange 事件和onFinish事件,本身我以为下图事件说明的意思是点击不同的省、市、区、街道…但是事实结果不是这样,除了第一层点击没有问题之外,点击第二层以及往后的每一层,级联选择器会关闭了,再次点击打开,数据还保存在上一次点击的状态,很明显,这触发了onFinish事件,关闭了级联选择器。选择第二层:触发onChange 事件和onFinish事件。

wenjiechen的博客 4865

【数电课程设计】---出租车计价器

文章目录1、任务要求2、方案3、收获 1、任务要求 2、方案 3、收获

LZY 1万+

Vant Weapp最新组件Cascader深度测评:多级选择解决方案

你是否还在为小程序中的多级选择功能开发而烦恼?传统的级联选择实现复杂、交互体验差、代码冗余,严重影响开发效率和用户体验。本文将深度测评Vant Weapp最新组件Cascader(级联选择器),为你提供一站式的多级选择解决方案。 读完本文,你将获得: - 全面了解Cascader组件的核心功能与优势 - 掌握Cascader的安装配置与基础使用方法 - 学会高级特性如自定义字段、事件处理等 - ...

gitblog_00073的博客 881

数字IC后端实战:OCC电路时钟树综合的5个关键技巧(附Synopsys工具配置)

本文深入探讨了数字IC后端设计中OCC电路时钟树综合的实战技巧。针对工具自动平衡导致的绕线拥塞和时序问题,文章提出了分段处理的核心思路,并详细阐述了通过物理隔离、分段长树策略以及Synopsys工具链(如ICC2、PrimeTime)的精准配置来优化function clk与occ clk路径的关键方法,旨在提升时序收敛性和可制造性。

jwt8token的博客 854

GEE AI: 利用 Satellite Embedding 语义搜索快速识别研究区目标斑块

摘要 本文介绍了一种基于Google Earth Engine的遥感语义搜索技术,利用Satellite Embedding数据集快速识别目标地物。该方法通过将光谱信息转化为高维向量,在武汉市的案例中展示了如何:1)定义研究区和样本点;2)加载预处理的Embedding数据;3)计算向量相似度;4)结合面积过滤优化结果。相比传统监督分类,该技术具有响应快速(无需模型训练)、抗季节干扰和精准界定等优势,特别适用于森林碳储量监测和土地利用检测等应用场景。文中提供了完整的GEE代码实现流程,包括样本定义、相似度计

此星光明博客 622

Vant Weapp Cascader 级联选择组件完全指南:多级数据选择的实现原理与实战用法

Cascader 级联选择组件是 Vant Weapp 小程序组件库中专门用于处理多层级数据选择的 UI 组件,其典型应用场景是省市区三级联动选择。本文基于仓库 [packages/cascader/README.md](https://link.gitcode.com/i/1d9eb43f4633199b4a27ce987c7dd1e7) 的官方文档,结合组件源码([index.ts](http

gitblog_00978的博客 364

微信小程序picker、使用 Vant Weapp 里面的Cascader 级联选择实现省市区选择器

微信小程序picker实现省市区选择器,​ 使用Vant Weapp 里面的Cascader 级联选择 ​

GKISX1216的博客 1367

Supermind量化实战:我如何给双均线策略加上“止损”和“仓位管理”,让回测收益更稳健

本文详细介绍了如何在Supermind平台上为双均线策略添加止损和仓位管理模块,以提升量化交易的稳健性。通过Python实现动态止损和智能仓位管理,策略的年化收益率从12.3%提升至15.8%,最大回撤从58.7%降至22.4%,Sharpe比率显著提高。这些实战技巧适用于量化交易爱好者,帮助他们在黑天鹅行情中保持收益稳定。

weixin_42567752的博客 361

UCIE Specification详解(八)

Logical Physical Layer(逻辑物理层)

Crazzy_M的博客 1605

ng-zorro-antd Cascader 级联选择器入门:从省市区三级联动到源码级原理剖析

本篇技术指南围绕 ng-zorro-antd 中 `nz-cascader` 级联选择组件的“基本用法”展开,以官方「省市区级联」示例为骨架,完整讲解选项数据结构、`ngModel` 双向绑定、级联菜单渲染原理与常用 API。读完本文,你将能够独立搭建一个可运行的三级联动选择器,并理解其背后的树形数据模型与浮层渲染机制。 ## 一、Cascader 组件是什么,何时使用 Cascader(级联

gitblog_00525的博客 212

基于simulink的智能驾驶领域--智能车道保持辅助系统仿真

LKAS通过摄像头等传感器检测车辆相对于车道线的位置,并自动调整转向,以帮助驾驶员保持在车道内行驶。将摄像头传感器模块的输出连接到车道线检测模块的输入端口,再将车道线检测模块的输出连接到转向控制器模块的输入端口,最后将转向控制器模块的输出连接到车辆动力学模型的转向输入端口,形成闭环控制系统。上升时间是指系统从初始转向角上升到目标转向角所需的时间,调节时间是指系统进入并保持在目标转向角一定范围内的所需时间。该控制器将根据摄像头传感器的数据调整车辆的转向角,以保持车辆在车道内行驶。

xiaoheshang_123的博客 161

移动端H5项目实战:如何优雅地用Vant Cascader对接后端省市区接口?

本文详细介绍了在移动端H5项目中使用Vant Cascader组件优雅对接后端省市区接口的实战方案。通过Vue3+Vant技术栈,实现异步加载、接口适配和性能优化,解决省市区三级联动中的关键问题,提升用户体验和开发效率。重点包括数据结构设计、缓存机制和完整选择流程处理。

weixin_30340617的博客 536

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

地区选择器:省市区三级联动选择(265)

实现省市区三级联动地址选择,需要根据您的具体开发框架(如 Vue、Flutter、uni-app 等)来选择合适的组件库或实现方案。

Davina_yu的博客 323

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Vant Weapp Area 省市区选择组件:数据格式、联动原理与实战接入完整指南

Vant Weapp 的 Area 组件是一个开箱即用的省市区三级联动选择器,它基于 Picker 组件实现,通常与弹出层配合完成收货地址、证件归属地等场景的地址选择。本文将以 [packages/area/README.md](https://link.gitcode.com/i/c671bda0d838f23d6668078c12c8a4f6) 为骨架,结合 [packages/area/in

gitblog_00418的博客 420

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

H5引入vant异步加载省市区三级联动

html <van-field v-model="placeCityValue" is-link readonly required input-align="right" label="籍贯所在市" placeholder="请选择籍贯所在市" @click="placeCityshow = true" class="jiguan"></van-field> <van-popup v-model="pla...

qq_35469137的博客 2417

Vant中Cascader级联选择省市区JSON数据

省市区数据

qq_50721840的博客 2506

Vant Weapp Cascader组件终极指南:5分钟搞定小程序多级选择难题

还在为小程序中的省市区选择、商品分类筛选而烦恼吗?传统的多级选择实现复杂、体验差,让无数开发者头疼不已。今天,我们就来深入探索Vant Weapp的Cascader组件——这个专为小程序设计的级联选择神器,让你5分钟就能搞定复杂的多级选择需求! ## 为什么你需要Cascader组件? 想象一下这些场景: - 用户需要选择收货地址(省→市→区) - 电商平台需要商品分类筛选(一级→二级→三级)

gitblog_00318的博客 210

5分钟掌握Vant Weapp级联选择:终极实战指南

在小程序开发中,多级选择功能一直是开发者面临的痛点。传统的实现方式要么代码冗余复杂,要么交互体验生硬,严重影响开发效率和用户体验。今天,我们将深度解析Vant Weapp的Cascader级联选择组件,这个轻量级、高性能的小程序UI组件库如何彻底解决多级选择难题。Vant Weapp作为有赞团队出品的小程序UI组件库,其Cascader组件凭借无限层级支持、流畅交互体验和高度定制化特性,已成为小程

gitblog_00277的博客 405
上一篇: 分享前端开发常用代码片段
下一篇: 那些你需要知道的CSS小代码
逩跑鍀小学生
博客等级 码龄5年 37粉丝 52原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值