123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- 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})
- }
- })
|