123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- // component/wx-index-list/wx-index-list.js
- let common = require('../../utils/util.js');
- Component({
- /**
- * 组件的属性列表
- */
- properties: {
- data: {
- type: Object,
- value: {},
- },
- myCity: {
- type: String,
- value: "",
- },
- // 用于外部组件搜索使用
- search: {
- type: String,
- value: "",
- observer: function(newVal, oldVal) {
- console.log(newVal)
- this.value = newVal;
- this.searchMt();
- }
- }
- },
- data: {
- list: [],
- rightArr: [], // 右侧字母展示
- jumpNum: '', //跳转到那个字母
- myCityName: '请选择' // 默认我的城市
- },
- ready() {
- let data = this.data.data;
- this.resetRight(data);
- /** if (this.data.myCity) {
- this.getCity()
- }
- **/
- },
- methods: {
- // 数据重新渲染
- resetRight(data) {
- let rightArr = []
- for (let i in data) {
- rightArr.push(data[i].title.substr(0, 1));
- }
- this.setData({
- list: data,
- rightArr
- })
- },
- getCity() {
- wx.getLocation({
- type: 'wgs84',
- success: function(res) {
- this.latitude = res.latitude;
- this.longitude = res.longitude;
- // console.log(res)
- }
- })
- },
- // 右侧字母点击事件
- jumpMt(e) {
- let jumpNum = e.currentTarget.dataset.id;
- this.setData({
- jumpNum
- });
- },
- // 列表点击事件
- detailMt(e) {
- let detail = e.currentTarget.dataset.detail;
- let myEventOption = {
- bubbles: false, //事件是否冒泡
- composed: false, //事件是否可以穿越组件边界
- capturePhase: false //事件是否拥有捕获阶段
- } // 触发事件的选项
- this.triggerEvent('detail', detail, myEventOption)
- },
- tomycity(e) {
- let detail = {
- name: e.currentTarget.dataset.name
- }
- let myEventOption = {
- bubbles: false, //事件是否冒泡
- composed: false, //事件是否可以穿越组件边界
- capturePhase: false //事件是否拥有捕获阶段
- } // 触发事件的选项
- this.triggerEvent('detail', detail, myEventOption)
- },
- // 获取搜索输入内容
- input(e) {
- this.value = e.detail.value;
- this._search();
- },
- // 基础搜索功能
- searchMt(e) {
- this.triggerEvent('cancel')
- },
- cancel: function() {
- this.value = "";
- this.setData({
- value: ""
- })
- this._search();
- },
- _search() {
- console.log("搜索")
- let data = this.data.data;
- let isc = common.isChinese(this.value);
- let newData = [];
- for (let i = 0; i < data.length; i++) {
- let itemArr = [];
- for (let j = 0; j < data[i].item.length; j++) {
- let isok = isc ? (data[i].item[j].name.indexOf(this.value) > -1) : (data[i].item[j].py.indexOf(this.value.toUpperCase()) > -1);
- if (isok) {
- let itemJson = {};
- for (let k in data[i].item[j]) {
- itemJson[k] = data[i].item[j][k];
- }
- itemArr.push(itemJson);
- }
- }
- if (itemArr.length === 0) {
- continue;
- }
- newData.push({
- title: data[i].title,
- type: data[i].type ? data[i].type : "",
- item: itemArr
- })
- }
- this.resetRight(newData);
- },
- // 城市定位
- locationMt() {
- // TODO 暂时没有实现 定位自己的城市,需要引入第三方api
- }
- }
- })
|