- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > web開(kāi)發(fā) >
- 微信小程序開(kāi)發(fā)中如何實(shí)現城市選擇器
這篇文章將為大家詳細講解有關(guān)微信小程序開(kāi)發(fā)中如何實(shí)現城市選擇器,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
移動(dòng)開(kāi)發(fā)中城市選擇器必不可少.
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) { // 生命周期函數--監聽(tīng)頁(yè)面加載 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 () { // 生命周期函數--監聽(tīng)頁(yè)面初次渲染完成 }, onShow: function () { // 生命周期函數--監聽(tīng)頁(yè)面顯示 }, onHide: function () { // 生命周期函數--監聽(tīng)頁(yè)面隱藏 }, onUnload: function () { // 生命周期函數--監聽(tīng)頁(yè)面卸載 }, onPullDownRefresh: function () { // 頁(yè)面相關(guān)事件處理函數--監聽(tīng)用戶(hù)下拉動(dòng)作 }, onReachBottom: function () { // 頁(yè)面上拉觸底事件的處理函數 }, onShareAppMessage: function () { // 用戶(hù)點(diǎn)擊右上角分享 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) { //向上移動(dòng) if (pageY < tHeight) { // showLetter=this.mateLetter(pageY,this); this.nowLetter(pageY, this); } } else {//向下移動(dòng) 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 }) } })
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系站長(cháng)郵箱:ts@56dr.com進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2 建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站