微信小程序-基于Vant Weapp UI 组件库的Area 省市区选择

embedded/2024/12/23 12:23:37/

Area 省市区选择,省市区选择组件通常与 弹出层 组件配合使用。
areaList 格式
areaList 为对象结构,包含 province_list、city_list、county_list 三个 key。

每项以地区码作为 key,省市区名字作为 value。地区码为 6 位数字,前两位代表省份,中间两位代表城市,后两位代表区县,以 0 补足 6 位。比如北京的地区码为 11,以 0 补足 6 位,为 110000。

Vant 官方提供了一份默认的省市区数据,可以通过 @vant/area-data 引入。

1. 省市区数据引入

npm i @vant/area-data

安装后,使用@vant下面的路径无法引用成功
在这里插入图片描述
我们新建一个用来引入文件的文件夹node_Files,放在pages下面,把@vant中的 area-data 整个进行拷贝,把dist里面的index.cjs.js文件名改为data.js,index.d.ts文件名改为data.d.ts。
在这里插入图片描述
引入链接

//省市区数据引入使用
import {areaList
} from "../../pages/node_Files/area-data/dist/data";

2. 封装组件

在这里插入图片描述
address-option.wxml

<!--components/address-option.wxml-->
<van-field value="{{ fieldValue }}" readonly clearable input-align="{{inputAlign}}" label="{{label}}" placeholder="请选择地区" bind:tap="onClick" required is-link />
<van-action-sheet show="{{ show }}"><van-area area-list="{{ areaList }}" title="地区选择" bind:confirm="onConfirm" bind:cancel="onClose" />
</van-action-sheet>

addressOption.js

// components/addressOption/addressOption.js
//省市区数据引入使用
import {areaList
} from "../../pages/node_Files/area-data/dist/data";Component({/*** 组件的属性列表*/properties: {label: {type: String,value: "地区"},inputAlign: {type: String,value: "left"},optionValue: {type: String,value: ""},mustFillIn: {type: String,value: false}},/*** 组件的初始数据*/data: {areaList,show:false},/*** 组件的方法列表*/methods: {onClick() {this.setData({show: true,});},onConfirm(e){console.log("确定省市区:",e)var address=""e.detail.values.forEach(element => {address=address+element.name});this.setData({address: address,show: false,})this.handleTap()console.log("省市区为:",address)},handleTap() {let value = this.data.addressconsole.log("fieldValue 地址:", value)this.triggerEvent("addressTab", value)},onClose() {this.setData({show: false,});},},observers: {optionValue: function (e) {this.setData({fieldValue: e})}},
})

address-option.json

{"component": true,"usingComponents": {"van-field": "@vant/weapp/field/index","van-action-sheet": "@vant/weapp/action-sheet/index","van-area": "@vant/weapp/area/index"}
}

3. 页面使用省市区

3.1. 引入组件

address.json

"usingComponents": {"address-option": "/components/address-option/address-option"}

3.2. 调用组件

address.wxml

<address-option bind:addressTab="onAddress"></address-option>

3.3. 接收子组件传过来的值

address.js

Page({/*** 页面的初始数据*/data: {radio: '1',fieldValue: ""},onAddress(e){this.setData({fieldValue: e.detail})},
})

http://www.ppmy.cn/embedded/148064.html

相关文章

深入了解 Kubernetes Pod 的状态

深入了解 Kubernetes Pod 的状态 在 Kubernetes 中&#xff0c;Pod 是部署和管理应用的最小单位。理解 Pod 的各种状态、它们的意义以及如何排查异常状态&#xff0c;对于我们日常运维和故障排查至关重要。在这篇文章中&#xff0c;我们将介绍 Kubernetes Pod 的各种状态&#…

3354. 使数组元素等于零

3354、[简单] 使数组元素等于零 1、题目描述 给你一个整数数组 nums 。 开始时&#xff0c;选择一个满足 nums[curr] 0 的起始位置 curr &#xff0c;并选择一个移动 方向 &#xff1a;向左或者向右。 此后&#xff0c;你需要重复下面的过程&#xff1a; 如果 curr 超过范…

鸿蒙学习笔记:用户登录界面

文章目录 1. 提出任务2. 完成任务2.1 创建鸿蒙项目2.2 准备图片资源2.3 编写首页代码2.4 启动应用 3. 实战小结 1. 提出任务 本次任务聚焦于运用 ArkUI 打造用户登录界面。需呈现特定元素&#xff1a;一张图片增添视觉感&#xff0c;两个分别用于账号与密码的文本输入框&#…

验证码机制

偶然间看到了验证码机制&#xff0c;顺便总结一下&#xff1a; 首先&#xff0c;验证码是从后端生成的&#xff0c;随机生成&#xff1b; 【后端永远认为前端有可能会被伪造】 1.后端调用相关的绘图第三方类库&#xff0c;或是&#xff08;平台PHP、.NET、java&#xff09;系…

mysql面试核心概念

数据库基础 1.数据库分类 2.配置文件位置 3.修改密码 4.破解数据库密码 5.慢日志:sql语句的执行时间 6.数据类型 7.导入导出数据 8.truncate和delete 9.事务:一组sql要么全部执行.要么全部不执行 10.mysql的架构 11.范式 12.索引:加速查询数据1.分类关系型数据库:1.数据持久…

Vue.js 组件开发概念介绍:从入门到上手

本文我们来聊聊 Vue.js 组件开发 的一些基本概念。如果你刚开始接触 Vue 或者想更好地理解它的组件化思想&#xff0c;这篇文章将帮助你快速入门。Vue 组件开发是 Vue.js 的核心&#xff0c;掌握它&#xff0c;你将能用 Vue 更高效地开发应用。 什么是 Vue.js 组件&#xff1f…

问题解决:发现Excel中的部分内容有问题。是否让我们尽量尝试恢复? 如果您信任此工作簿的源,请单击“是”。

在开发同步导出功能是遇到了如标题所示的问题&#xff0c;解决后遂记录下来供大家参考。 RestController public class XxxController {PostMapping("/export")public BaseResponse export(RequestBody PolicyErrorAnalysisExportReq exportReq, HttpServletRespons…

【Rust自学】4.3. 所有权与函数

4.3.0 写在正文之前 在学习了Rust的通用编程概念后&#xff0c;就来到了整个Rust的重中之重——所有权&#xff0c;它跟其他语言都不太一样&#xff0c;很多初学者觉得学起来很难。这个章节就旨在让初学者能够完全掌握这个特性。 本章有三小节&#xff1a; 所有权&#xff1…