小程序基于 picker 封装省市区三级联动组件

效果图

在这里插入图片描述

代码如下

a.子组件中

  • wxml 中
<view class="picker-city-area-content">
  <picker bindchange="changeRegin" mode = "region" value="{{region}}">
   <view class="picker-city-area-detail">{{region[0]}} - {{region[1]}} - {{region[2]}}</view>
  </picker>
</view>
  • wxss
page{
  background-color: #efeff4;
}
.picker-city-area-content{
  text-align: center;
}
.picker-city-area-detail{
  height: 80rpx;
  line-height: 80rpx;
  background-color: #fff;
  font-size: 35rpx;
  padding: 0 10px;
  overflow: hidden;
}
  • js 中
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    region: {
      type: Array,
      value: []
    }
  },
  /**
   * 组件的初始数据
   */
  data: {},
  /**
   * 组件的方法列表
   */
  methods: {
    // 选择省市区函数
    changeRegin(e){
      const { code, value } = e.detail
      this.setData({ region: value });
      this.triggerEvent('handleChangeCityAreaInfo', {
        areaInfo: [
          { provinceCode: code[0], provinceName: value[0] },
          { cityCode: code[1], cityName: value[1] },
          { areaCode: code[2], areaName: value[2] }
        ]
      })
    }
  }
})

b. 父组件中使用

  • wxml 中
<view class="box">
   <picker-city-area region="{{region}}" bind:handleChangeCityAreaInfo="handleChangeCityAreaInfo"></picker-city-area>
</view>
  • wxss 中
.box{padding: 20px 15px;}
  • json 中
{
    "navigationBarTitleText": "省市区联动",
    "usingComponents": {
        "picker-city-area": "/components/picker-city-area/picker-city-area",
        "my-date-picker": "/components/my-date-picker/index"
    }
}
  • js 中
Page({
    data: {
        region: ["湖北省", "武汉市", "洪山区"],
        valueList: [9999,0,0]
    },
    handleChangeCityAreaInfo: function(e) {
        console.log(e.detail.areaInfo)
    },
    handleSelectDate(e){
        console.log(e.detail);
    }, 
    // 页面初始化事件
    onLoad: function () {},
    onShow: function () {
        const date = new Date()
        this.setData({valueList: [9999,date.getMonth(),date.getDate() -1]})
    }
});

可以通过使用uview组件来实现uni picker省市区三级联动。这个组件可以在uniapp中使用,并且已经封装好了数据的渲染和传递功能。你可以使用template模板语法将数据从页面中传递给uview组件,然后通过Ajax请求从后台获取省市区的数据,将其渲染到picker组件中,并将选择的省市区的code码拼接后传递给后台实现需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用picker封装省市区三级联动模板](https://download.csdn.net/download/weixin_38642636/16215282)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [uniapp使用uview组件实现省市区三级联动](https://download.csdn.net/download/m0_62676565/85819519)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [uniapp picker组件实现省市区三级联动效果](https://blog.csdn.net/weixin_45356397/article/details/119701421)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值