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; |
|
//添加要匹配的字母範圍值 |
//一、更加屏幕高度設置子元素的高度 |
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}) |
} |
}) |