微信小程序自定义组件(1)----地址选择器

wepy-小程序 仿京东地址选择器组件 WePY简介 Wepy是支持微信小程序组件化开发的框架,开发风格接近Vue.js,支持使用第三方npm资源。 WePY官网地址 微信小程序文档 效果图 代码 selectaddress.wpy <style> .select-area { background: rgba(0,0,0,0.4); width: 100%; hei... 阅读详情

话不多说,先上效果图:


点击选择地址后

实现代码:

wxml

<view class="address-selecter">
  <text class='chooseAddress_text' bindtap='selectDistrict'>{{address}}</text>
  <view class="picker-view" animation="{{animationAddressMenu}}" 
  style="visibility:{{addressMenuIsShow ? 'visible':'hidden'}}">
  <view style="height:10% ;width:95%;margin-top:10rpx">
    <text catchtap="cityCancel" class='cancel_text'>取消</text>
    <text style="float: right" catchtap="citySure" class='sure_text'>确定</text>
  </view>
  <picker-view style="width: 100%; height: 300px;" bindchange="_cityChange" value="{{value}}" >
    <picker-view-column>
      <view wx:for="{{provinces}}" class="picker-item" wx:key="*this">
        {{item.name}}</view>
    </picker-view-column>
    <picker-view-column>
      <view wx:for="{{citys}}" class="picker-item" wx:key="*this">
        {{item.name}}</view>
    </picker-view-column>
    <picker-view-column>
      <view wx:for="{{areas}}" class="picker-item" wx:key="*this">
        {{item.name}}</view>
    </picker-view-column>
  </picker-view>
</view>
</view>

wxss

.chooseAddress_text{
  margin-left: 20rpx;
  font-size: 30rpx;
  text-align: center;
}

.picker-view {
  width: 100%;
  display: flex;
  z-index:12;
  background-color: #fff;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  position: fixed;
  bottom: 0rpx;
  left: 0rpx;
  height: 40vh;
}

.picker-item {
  line-height: 70rpx;
  margin-left: 5rpx;
  margin-right: 5rpx;
  text-align: center;
}

.picker-view .cancel_text{
  color: green;
}

.picker-view .sure_text{
  color: green;
}

json

{
  "component": true,
  "usingComponents": {}
}

js

var util = require("../../utils/util.js")
var address = require('../../utils/city.js')

Component({
  /**
   * 组件的属性列表
   */
  properties: {
   address:{
     type: String,
     value: '点击选择地址'
   }
  },

  /**
   * 组件的初始数据
   */
  data: {
    animation: {},
    animationAddressMenu: {},
    addressMenuIsShow: false,
    value: [0, 0, 0],
    provinces: [],
    citys: [],
    areas: [],
    address: '',
  },

  /**
   * 生命周期函数
   */
  lifetimes:{
    attached: function () {
      let id = address.provinces[0].id
      this.setData({
        provinces: address.provinces,
        citys: address.citys[id],
        areas: address.areas[address.citys[id][0].id],
      })
    },
  },

  /**
   * 组件的方法列表
   */
  methods: {
    /**
   * 点击所在地区弹出选择框
   */
    selectDistrict: function (e) {
      var that = this
      if (that.data.addressMenuIsShow) {
        return
      }
      that._startAddressAnimation(true)
    },

    /**
     * 取消按钮
     */
    cityCancel: function (e) {
      this._startAddressAnimation(false)
    },

    /**
     * 确定按钮
     */
    citySure: function (e) {
      var that = this
      let value = that.data.value
      that._startAddressAnimation(false)
      // 所选择的城市信息
      let address_now = that.data.provinces[value[0]].name +
       ',' + that.data.citys[value[1]].name + ',' + that.data.areas[value[2]].name
      console.log(address_now)
      that.setData({
        address: address_now
      })
      that.triggerEvent('select', [address_now, that.data.provinces[value[0]].name,
        that.data.citys[value[1]].name, that.data.areas[value[2]].name])
    },

    /**
     * 执行动画
     */
    _startAddressAnimation: function (isShow) {
      var that = this
      if (isShow) {
        that.animation = wx.createAnimation({
          duration: 1000,
          timingFunction: 'ease',
        }),
        that.animation.translateY(0 + 'vh').step()
      } else {
        that.animation.translateY(40 + 'vh').step()
      }
      that.setData({
        animationAddressMenu: that.animation.export(),
        addressMenuIsShow: isShow,
      })
    },

    /**
     * 点击蒙版时取消组件的显示
     */
    _hideCitySelected: function (e) {
      this._startAddressAnimation(false)
    },


    /**
     * 处理省市县联动逻辑
     */
    _cityChange: function (e) {
      let value = e.detail.value
      let provinces = this.data.provinces
      let citys = this.data.citys
      let areas = this.data.areas
      let provinceNum = value[0]
      let cityNum = value[1]
      let countyNum = value[2]
      // 如果省份选择项和之前不一样,表示滑动了省份,此时市默认是省的第一组数据,
      if (this.data.value[0] != provinceNum) {
        let id = provinces[provinceNum].id
        this.setData({
          value: [provinceNum, 0, 0],
          citys: address.citys[id],
          areas: address.areas[address.citys[id][0].id],
        })
      } else if (this.data.value[1] != cityNum) {
        // 滑动选择了第二项数据,即市,此时区显示省市对应的第一组数据
        let id = citys[cityNum].id
        this.setData({
          value: [provinceNum, cityNum, 0],
          areas: address.areas[citys[cityNum].id],
        })
      } else {
        // 滑动选择了区
        this.setData({
          value: [provinceNum, cityNum, countyNum]
        })
      }
    },

  }
})

使用方式:

 <!--地址-->
 <view class="address">
    <text class='address_text'>地址:</text>
    <address-selecter bind:select="addressSelecter"></address-selecter>
 </view>
/**
   * 地址选择
   */
  addressSelecter(e){
   console.log(e)
  },

必要文件下载地址

城市信息下载地址
util文件

微信小程序原生开发功能合集七:位置选择组件的封装 本章实现小程序api位置选择组件输入组件,实现位置选择及输入功能。 阅读详情

相关推荐

微信小程序 - 最新详细实现省市区三级联动组件插件,小程序选择省市区弹框,选择省市区联动详细教程,省市区三级地址选择,微信小程序中使用picker封装省市区三级联动实现(详细示例代码,一键复制开箱即用

微信小程序,省市区,省份,市区,区县,弹框式省市区三级联动,uniapp,小程序省市区三级联动,如何实现省市区数据动态懒加载,微信小程序省市区三级联动,微信小程序三级联动,省市区联动组件封装,使用picker封装省市区三级联动的实现,微信小程序picker实现的省市区三级联动,怎么懒加载,怎么选择省份的时候再出现市区,省市区三级联动后台数据动态加载到页面,报错怎么办,省市区有什么插件,动态加载省市区的数据,新手小白详细教程,小程序 后台动态数据 省市二级联动,完整运行示例源代码,小程序三级地址联动,地址选择

✅ 精选推荐文章 4481

微信小程序地址选择wx.chooseLocation

【代码】微信小程序地址选择wx.chooseLocation。

aaa123aaasqw的博客 2345

微信小程序中如何实现省市区街道四级地址级联选择

微信小程序中支持省市区地址级联吗?微信小程序中的地址级联最多支持到几级?今天,我们就来看看,微信小程序中的地址级联的使用,以及一些坑…希望大家看完之后能避免踩坑啊。

穆雄雄的博客 2022

【亲测免费】 微信小程序地址选择器:wx_selectArea 使用指南及问题解决方案

**wx_selectArea** 是一个专为微信小程序设计的省市(区)地址选择联动插件。它利用了 `picker-view` 组件来实现地址的选择功能,使得开发者可以轻松地在小程序中集成地址选择的功能。此项目遵循 MIT 开源协议,由JavaScript编写,并提供了一定的自定义配置选项,如隐藏区级选择等功能。 ### 主要编程语言 - **JavaScript** ## 新手使用注意事项及...

gitblog_01267的博客 1429

解密微信DAT图片:一键转换JPG/PNG/GIF的实用指南

本文详细解析微信DAT图片的加密机制及转换方法,提供从定位文件到使用WeijieSoft工具一键转换JPG/PNG/GIF的完整指南。涵盖新旧版微信存储路径差异、批量处理技巧及常见问题解决方案,帮助用户高效恢复重要图片并释放存储空间。

weixin_29305337的博客 3618

Android应用开发从零到一:基于Kotlin与Jetpack Compose的完整实践指南

移动应用开发的核心在于构建一个架构清晰、可维护且可扩展的应用基础。理解应用架构的原理,如关注点分离和数据驱动UI,是实现高质量应用的关键技术价值。在现代Android开发中,Kotlin语言凭借其空安全特性和协程,能有效提升代码的健壮性与开发效率。Jetpack Compose作为声明式UI框架,代表了UI开发的未来方向,与Kotlin协程深度集成,简化了复杂交互界面的构建。这些技术共同服务于个人任务管理、企业工具等多种应用场景。本文以构建一个完整的个人任务管理应用为例,系统阐述从环境搭建、UI构建、数据持

weixin_32667955的博客 313

10分钟搞定微信小程序地址选择器:完整配置与实战指南

想要快速为你的微信小程序添加一个专业的省市区地址选择器吗?🌍 微信小程序地址选择器 wx_selectArea 项目为你提供了完美的解决方案!这个开源组件采用微信小程序的 `picker-view` 组件,实现了流畅的省市区三级联动选择功能,让用户轻松选择收货地址、注册信息等各种场景下的地理位置数据。 ## 🚀 为什么选择这个地址选择器? **省市区三级联动**是电商、外卖、社交等小程序必

gitblog_00919的博客 565

用Arduino和RC522模块DIY一个NFC门禁卡复制器(附完整代码)

本文详细介绍了如何利用Arduino和RC522模块DIY一个NFC门禁卡复制器,包括硬件连接、软件配置、数据读写技术及完整代码实现。通过本教程,电子爱好者可以深入了解NFC技术,并构建自己的智能门禁系统,适用于家庭安全、办公场所等多种场景。

weixin_33704591的博客 501

微信小程序地址选择器:数据驱动的三级联动组件实现

在移动应用开发中,地址选择是用户交互的核心场景之一。传统的地址选择组件往往面临数据管理复杂、联动逻辑耦合度高、用户体验不流畅等问题。本文深入分析微信小程序中的省市区三级联动选择器实现方案,探讨其技术架构、数据驱动设计以及在实际业务场景中的应用价值。 ## 技术痛点与解决方案 ### 传统地址选择组件的挑战 在微信小程序开发中,地址选择功能通常面临以下几个技术挑战: 1. **数据管理复杂*

gitblog_00584的博客 232

奇迹mu服务端DATA文件解析:从基础配置到高级玩法

本文深入解析奇迹MU服务端DATA文件的核心配置与高级玩法,涵盖基础设置、怪物AI系统、技能战斗机制、副本事件管理及物品商城定制。通过详细示例和实用技巧,帮助开发者掌握从经验倍率调整到动态事件触发的全方位配置方法,实现个性化的私服搭建与运营。

weixin_29254673的博客 530

(3万字深度解析)Kaggle《房价预测:高级回归技巧》详解复现攻略

在这篇教程式文章中,我们从零开始完成了 Kaggle《房价预测:高级回归技巧》比赛的复现工作,涵盖了数据预处理、特征工程、模型训练、调优、解释和融合的完整流程。深入理解数据:阅读数据描述,结合常识对每个特征作出合理处理(如缺失值填充’None’表示无此设施 、异常值剔除 等)。对目标和偏态特征进行对数变换,使分布更平滑,从而更好满足模型假设并提升准确度。特征工程:我们创造了总面积、总浴室等新特征,整合信息提高模型可学习性。

qq_38334677的博客 1770

【亲测免费】 微信小程序地址选择器 wx_selectArea 使用教程

``` wx_selectArea/ ├── README.md ├── app.js ├── app.json ├── app.wxss ├── components/ │ └── area-picker/ │ ├── area-picker.js │ ├── area-picker.json │ ├── area-picker.wxml │ ...

gitblog_00152的博客 728

matlab 点云按高程进行赋色【2024最新版】

首先按照Z轴方向求取所在点云的高程极值(包括高程最大值与最小值),然后将高程归一化到0~255范围内,最后采用matlab中的colormap颜色渲染函数进行赋色并保存渲染结果到点云。

点云侠的博客 3341

微信小程序地址选择器终极指南:新手必学的10个实用技巧

想要为你的微信小程序添加专业的地址选择功能吗?这个免费的省市区联动选择器正是你需要的完美解决方案!🚀 微信小程序地址选择器是一个基于微信官方 `picker-view` 组件构建的省市区三级联动选择器,能够为你的小程序提供流畅的地址选择体验。无论你是开发电商应用、物流系统还是用户注册功能,这个组件都能帮你轻松实现地址选择需求。 ## 📍 为什么选择这个地址选择器? ### 1️⃣ 极简集

gitblog_01025的博客 335

【Bug已解决】Codex CLI 报 stream disconnected before completion 解决方案

方案适用场景推荐指数更新根证书库社区验证的最常见根因⭐⭐⭐⭐⭐检查系统时间虚拟机/容器等特殊运行环境⭐⭐⭐⭐核对 base_url 配置排除证书问题后的下一步排查⭐⭐⭐⭐更换网络环境测试怀疑本地网络设备存在干扰⭐⭐⭐升级到最新版本已知版本缺陷的场景⭐⭐⭐⭐报错虽然表现形式很像网络连接问题,但社区排查的多个真实案例表明,很大一部分情况的根因其实是本机系统的 TLS 证书信任链异常或系统时间不准确,而不是单纯的网络质量问题。优先检查并更新系统根证书库,这是社区验证过的高频根因。

一键难忘的博客 8017

实战5:农作物产量预测 蔬菜产量预测 lstm 完整代码数据-可直接运行-计算机毕设

实战5:农作物产量预测 蔬菜产量预测 lstm 完整代码数据-可直接运行-计算机毕设

机器学习深度学习业余选手 1257

5分钟快速上手微信小程序省市区地址选择器:终极联动选择指南

想要在微信小程序中快速实现省市区三级地址联动选择功能吗?这个微信小程序地址选择器开源项目为你提供了完美的解决方案!通过简洁的组件化设计,开发者可以轻松集成完整的地址选择功能,提升用户体验的同时大幅简化开发流程。无论你是电商平台需要收货地址选择,还是用户资料需要地区信息填写,这个省市区联动选择器都能满足你的需求。 ## 📱 实际效果展示:直观的省市区联动体验 [![微信小程序省市区地址选择器演

gitblog_00569的博客 825

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

终极指南:5分钟快速上手微信小程序地址选择器,实现省市区三级联动

想在微信小程序中快速集成省市区地址选择功能吗?这个开源项目为你提供了完美的解决方案!微信小程序省市(区)地址选择联动组件让用户能够轻松选择完整的收货地址,提升用户体验的同时简化开发流程。 ## 🎯 项目核心功能与优势 这个微信小程序组件实现了**省市区三级联动选择器**,用户可以: - 通过滚动选择省份、城市和区县 - 实时查看选择的完整地址信息 - 一键获取已选择的城市数据 通过[src

gitblog_00775的博客 801

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

5分钟快速上手:微信小程序省市区三级联动地址选择器终极指南

在微信小程序开发中,地址选择功能是电商、物流、用户资料等场景的刚需。然而,手动实现省市区三级联动选择器既耗时又容易出错。今天,我为你推荐一个开源的微信小程序地址选择器组件,让你在5分钟内快速集成完整的省市区联动功能,大幅提升开发效率! ## 🚀 为什么选择这个微信小程序地址选择器? 这个开源项目专为微信小程序开发者设计,解决了地址选择的核心痛点。通过智能的省市区三级联动机制,用户只需简单滚动

gitblog_01200的博客 343

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

五级地址选择器 微信小程序 四级五级各类地址数据文件

五级地址选择器 微信小程序 四级五级各类地址数据文件,可直接导入微信小程序数据库的五级地址文件

Abotes的博客 1917

微信小程序地址选择器:5分钟实现省市区三级联动的高效解决方案

在微信小程序开发中,地址选择功能是电商、物流、用户注册等场景中的高频需求。然而,从零开始实现一个稳定、流畅的省市区三级联动组件,开发者往往需要面对数据接口管理、UI交互设计、性能优化等多重挑战。如何快速集成一个既美观又实用的地址选择器,同时保持代码的可维护性和扩展性? ## 问题场景与技术挑战 当你需要在微信小程序中集成地址选择功能时,通常会遇到以下几个痛点: **数据管理复杂度高**:省市

gitblog_01158的博客 217

微信小程序地址选择器终极指南:从零到一完整教程

wx_selectArea是一个专为微信小程序设计的省市(区)地址联动选择器,基于微信原生组件`picker-view`开发,提供流畅的地址选择体验和高度自定义配置。本文将带你从零开始,快速掌握这个强大插件的使用方法。 ## 🚀 快速上手:5分钟集成地址选择功能 ### 第一步:获取项目文件 首先需要将项目文件克隆到本地: ```bash git clone https://gitcod

gitblog_00545的博客 448

5分钟实战:微信小程序省市区地址选择器高效集成指南

想要在微信小程序中快速实现省市区三级联动地址选择功能吗?微信小程序地址选择器组件为你提供了专业、高效的解决方案。这个开源项目让开发者能够在短短几分钟内集成完整的地址选择功能,显著提升用户填写地址的体验,同时简化开发流程。 ## 🚀 为什么选择这个地址选择器? 在电商、外卖、政务等小程序中,地址选择是用户最频繁的操作之一。传统的地址输入方式不仅繁琐,还容易出错。这个微信小程序省市区联动选择器通

gitblog_00546的博客 85

微信小程序省市区地址选择器终极指南:5分钟快速实现三级联动选择

想在微信小程序中快速集成省市区地址选择功能吗?这个开源项目为你提供了完美的解决方案!微信小程序省市(区)地址选择联动组件让用户能够轻松选择完整的收货地址,提升用户体验的同时简化开发流程。通过简单的配置和几行代码,你就能在微信小程序中实现专业的省市区三级联动选择功能,无论是电商平台、服务类应用还是数据统计场景都能完美适配。 ## 🎯 项目概览与价值定位 微信小程序省市区地址选择器是一个专门为微

gitblog_00218的博客 301

终极指南:5分钟快速集成微信小程序省市区三级联动地址选择器

想在微信小程序中快速实现省市区三级联动地址选择功能吗?这个开源项目为你提供了完美的解决方案!微信小程序省市(区)地址选择联动组件让用户能够轻松选择完整的收货地址,提升用户体验的同时简化开发流程。无论是电商平台的收货地址选择,还是服务类小程序的地理位置信息收集,这个组件都能帮你节省大量开发时间。 ## 🎯 项目核心功能与优势 这个微信小程序组件实现了**省市区三级联动选择器**,具备以下核心功

gitblog_00455的博客 130
上一篇: 实模式与保护模式详解三:寻址方式
下一篇: 汇编SHR、SHL、SAR、SAL、ROL、ROR、RCL、RCR指令
Hack Rabbit
Hack Rabbit 新星创作者: 运维技术领域 新星创作者: 运维技术领域
博客等级 码龄9年 2893粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

Hack Rabbit

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

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

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

打赏作者

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

抵扣说明:

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

余额充值