2017-05-11 17:38:06 +08:00

136 lines
2.8 KiB
JavaScript

// pages/index/address.js
import {
getPrevPage,
getCurrentAddressList, setCurrentAddress,
searchAddressList,
splitByKeyword
} from '../../utils/util'
import debounce from '../../utils/debounce'
import {getUserAddrs} from '../../utils/apis'
var initReLocateLabel = '重新定位'
Page({
data: {
reLocateLabel: initReLocateLabel,
addressList: [],
poiList: [],
showSearchList: false,
searchKey: '',
searchList: []
},
onLoad: function (options) {
// 页面初始化 options为页面跳转所带来的参数
this.callback = options.callback || 'callback'
this.initAddressList()
this.initPoiList()
this.onSearchInput = debounce(this.onSearchInput, 300)
},
onReady: function () {
// 页面渲染完成
},
onShow: function () {
// 页面显示
},
onHide: function () {
// 页面隐藏
},
onUnload: function () {
// 页面关闭
},
reLocate(e) {
this.initPoiList()
},
onSearchInput(e) {
var that = this
var {value} = e.detail
this.setData({
searchKey: value,
showSearchList: !!value
})
if (value) {
searchAddressList({
keyword: value,
success(data) {
data = data.map(item => {
item['titleSplit'] = splitByKeyword(item.title, value)
return item
})
that.setData({
searchList: data
})
}
})
}
},
clearSearchKey(e) {
this.setData({
searchKey: '',
showSearchList: false
})
},
onSearchItemTap(e) {
var {id} = e.currentTarget
var {searchList} = this.data
var {
title, address, location,
city, district, adcode
} = searchList[id]
getPrevPage()[this.callback]({
location, title, address,
city, district,
district_id: adcode.toString(),
city_id: adcode.toString().replace(/\d{2}$/, '00')
})
wx.navigateBack()
},
onPoiItemTap(e) {
var {id} = e.currentTarget
var {poiList} = this.data
getPrevPage()[this.callback](poiList[id])
wx.navigateBack()
},
onAddressItemTap(e) {
var {id} = e.currentTarget
var {addressList} = this.data
getPrevPage()[this.callback](addressList[id])
wx.navigateBack()
},
initAddressList() {
var that = this
getApp().getLoginInfo(loginInfo => {
if(loginInfo.is_login) {
getUserAddrs({
success(data) {
that.setData({
addressList: data
})
}
})
}
})
},
initPoiList() {
var that = this
this.setData({
reLocateLabel: '定位中...'
})
getCurrentAddressList({
success(addressList) {
that.setData({
poiList: addressList,
reLocateLabel: initReLocateLabel
})
}
})
}
})