全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解微信小程序开发之城市选择器 城市切换

移动开发中城市选择器必不可少.

空白造了个.

gif:

这里只上部分js代码:

var city = require('../../utils/city.js');

Page({
 data: {
  searchLetter: [],
  showLetter: "",
  winHeight: 0,
  tHeight: 0,
  bHeight: 0,
  startPageY: 0,
  cityList: [],
  isShowLetter: false,
  scrollTop: 0,
  city: ""
 },
 onLoad: function (options) {
  // 生命周期函数--监听页面加载
  var searchLetter = city.searchLetter;
  var cityList = city.cityList();
  // console.log(cityInfo);

  var sysInfo = wx.getSystemInfoSync();
  console.log(sysInfo);
  var winHeight = sysInfo.windowHeight;

  //添加要匹配的字母范围值
  //1、更加屏幕高度设置子元素的高度
  var itemH = winHeight / searchLetter.length;
  var tempObj = [];
  for (var i = 0; i < searchLetter.length; i++) {
   var temp = {};
   temp.name = searchLetter[i];
   temp.tHeight = i * itemH;
   temp.bHeight = (i + 1) * itemH;

   tempObj.push(temp)
  }

  this.setData({
   winHeight: winHeight,
   itemH: itemH,
   searchLetter: tempObj,
   cityList: cityList
  })

  console.log(this.data.cityInfo);
 },
 onReady: function () {
  // 生命周期函数--监听页面初次渲染完成

 },
 onShow: function () {
  // 生命周期函数--监听页面显示

 },
 onHide: function () {
  // 生命周期函数--监听页面隐藏

 },
 onUnload: function () {
  // 生命周期函数--监听页面卸载

 },
 onPullDownRefresh: function () {
  // 页面相关事件处理函数--监听用户下拉动作

 },
 onReachBottom: function () {
  // 页面上拉触底事件的处理函数

 },
 onShareAppMessage: function () {
  // 用户点击右上角分享
  return {
   title: 'title', // 分享标题
   desc: 'desc', // 分享描述
   path: 'path' // 分享路径
  }
 },
 searchStart: function (e) {
  var showLetter = e.currentTarget.dataset.letter;
  var pageY = e.touches[0].pageY;
  this.setScrollTop(this, showLetter);
  this.nowLetter(pageY, this);
  this.setData({
   showLetter: showLetter,
   startPageY: pageY,
   isShowLetter: true,
  })
 },
 searchMove: function (e) {
  var pageY = e.touches[0].pageY;
  var startPageY = this.data.startPageY;
  var tHeight = this.data.tHeight;
  var bHeight = this.data.bHeight;
  var showLetter = 0;
  console.log(pageY);
  if (startPageY - pageY > 0) { //向上移动
   if (pageY < tHeight) {
    // showLetter=this.mateLetter(pageY,this);
    this.nowLetter(pageY, this);
   }
  } else {//向下移动
   if (pageY > bHeight) {
    // showLetter=this.mateLetter(pageY,this);
    this.nowLetter(pageY, this);
   }
  }
 },
 searchEnd: function (e) {
  // console.log(e);
  // var showLetter=e.currentTarget.dataset.letter;
  var that = this;
  setTimeout(function () {
   that.setData({
    isShowLetter: false
   })
  }, 1000)

 },
 nowLetter: function (pageY, that) {//当前选中的信息
  var letterData = this.data.searchLetter;
  var bHeight = 0;
  var tHeight = 0;
  var showLetter = "";
  for (var i = 0; i < letterData.length; i++) {
   if (letterData[i].tHeight <= pageY && pageY <= letterData[i].bHeight) {
    bHeight = letterData[i].bHeight;
    tHeight = letterData[i].tHeight;
    showLetter = letterData[i].name;
    break;
   }
  }

  this.setScrollTop(that, showLetter);

  that.setData({
   bHeight: bHeight,
   tHeight: tHeight,
   showLetter: showLetter,
   startPageY: pageY
  })
 },
 bindScroll: function (e) {
  console.log(e.detail)
 },
 setScrollTop: function (that, showLetter) {
  var scrollTop = 0;
  var cityList = that.data.cityList;
  var cityCount = 0;
  var initialCount = 0;
  for (var i = 0; i < cityList.length; i++) {
   if (showLetter == cityList[i].initial) {
    scrollTop = initialCount * 30 + cityCount * 41;
    break;
   } else {
    initialCount++;
    cityCount += cityList[i].cityInfo.length;
   }
  }

  that.setData({
   scrollTop: scrollTop
  })
 },
 bindCity: function (e) {
  var city = e.currentTarget.dataset.city;
  this.setData({ city: city })
 }
})

demo代码下载 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# 微信小程序城市选择器  # 微信小程序地区选择器  # 微信小程序实现自定义picker选择器弹窗内容  # 微信小程序 省市区选择器实例详解(附源码下载)  # 微信小程序三级联动选择器使用方法  # 微信小程序多列选择器range-key使用详解  # 微信小程序三级联动地址选择器的实例代码  # 微信小程序自定义多列选择器使用详解  # 微信小程序 滚动选择器(时间日期)详解及实例代码  # 微信小程序实现联动选择器  # 微信小程序日历弹窗选择器代码实例  # 微信小程序多项选择器checkbox  # 周期函数  # 必不可少  # 大家多多  # 加载  # 触底  # 选择器  # options  # function  # bindCity  # demo  # onLoad  # isShowLetter  # cityList  # scrollTop  # false  # console  # itemH  # windowHeight  # tempObj  # length 


相关文章: 深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  安云自助建站系统如何快速提升SEO排名?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  如何在Ubuntu系统下快速搭建WordPress个人网站?  网页设计网站制作软件,microsoft office哪个可以创建网页?  移民网站制作流程,怎么看加拿大移民官网?  完全自定义免费建站平台:主题模板在线生成一站式服务  网站插件制作软件免费下载,网页视频怎么下到本地插件?  在线教育网站制作平台,山西立德教育官网?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  制作证书网站有哪些,全国城建培训中心证书查询官网?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  如何在局域网内绑定自建网站域名?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  如何零基础开发自助建站系统?完整教程解析  建站之星如何开启自定义404页面避免用户流失?  招贴海报怎么做,什么是海报招贴?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  全景视频制作网站有哪些,全景图怎么做成网页?  网站制作公司,橙子建站是合法的吗?  如何在建站主机中优化服务器配置?  如何零基础在云服务器搭建WordPress站点?  如何通过VPS建站无需域名直接访问?  怀化网站制作公司,怀化新生儿上户网上办理流程?  如何在万网开始建站?分步指南解析  如何通过智能用户系统一键生成高效建站方案?  建站168自助建站系统:快速模板定制与SEO优化指南  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  建站之星免费版是否永久可用?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  建站上传速度慢?如何优化加速网站加载效率?  潮流网站制作头像软件下载,适合母子的网名有哪些?  成都网站制作报价公司,成都工业用气开户费用?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  网站制作公司排行榜,抖音怎样做个人官方网站  魔方云NAT建站如何实现端口转发?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  建站之星代理如何优化在线客服效率?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  太原网站制作公司有哪些,网约车营运证查询官网?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  如何在Windows服务器上快速搭建网站?  广州营销型建站服务商推荐:技术优势与SEO优化解析  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。