一、前言

二、主要内容

1、功能描述:通过选择类型和时间对请求到的活动进行帅选

2、具体实现

2.1根据城市请求活动

/*获取活动 :根据城市,日期,活动类型获取*/getActicityByLocationId:function(locId, dayType, eventType ){var that = this;

console.log("locId: "+ locId + ",dayType: " +dayType+ ", type: " +eventType)

wx.showToast({

title:'加载中',

icon:'loading',

duration:10000});var parameter ="?"locId&& (parameter +="loc=" +locId)

dayType&& (parameter += "day_Type=" +dayType)

eventType&& (parameter += "type="+eventType)//请求活动列表

var eventListURL = app.globalData.doubanBase + app.globalData.event_list_url + parameter + "&&start=0&&count=50"wx.request({

url: eventListURL,

data:{},

method:'GET',

header:{'content-type': 'json'},

success:function(res){

console.log(res)

that.handleEventListData(res.data.events)

},

fail:function(){

},

complete:function(){

wx.hideToast()

}

})

}

请求到的活动信息如下图所示,下面是没有分类的所有活动:

2.2、对上面请求到的活动分类

//处理活动信息

handleEventListData:function(data){var events ={}for(let idx indata){var event =data[idx]var category =event.category

console.log(category)//将所有的活动筛选出来

if(!events[category]){

events[category]=[]

}

console.log(events)//将上面的活动组装成以category为属性,ommonweal:[{ … }, { … }]

//格式化时间

var time_str = event.time_str//"2019.04.23 周二 起"

var time = ""

if(typeof time_str == 'string'){var time_arr = time_str.split(" ")

time= time_arr[0]

}var temp ={

id: event.id,

image:event.image,

loc_name:event.loc_name,

owner:event.owner,

category:event.category,

category_name:event.category_name,

title:event.title,

wisher_count:event.wisher_count,

has_ticket:event.has_ticket,

content:event.content,

can_invite:event.can_invite,

time_str: time,

album: event.album,

participant_count: event.participant_count,

tags: event.tags,

image_hlarge: event.image_hlarge,

begin_time: event.begin_time,

price_range: event.price_range,

geo: event.geo,

image_lmobile: event.image_lmobile,

loc_id: event.loc_id,

end_time: event.end_time,

address: event.address,

}

events[category].push(temp)//event里面根据category来分

}var keys = Object.keys(events); //方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列序和使用 for...in 循环遍历该对象时返回的顺序一致

keys.sort();

console.log(events)var eventsKey =[]for(let i inkeys){var key =keys[i]var arr =events[key]if(arr.length>=4){

eventsKey.push(key)//显示活动类型大于4的

}

}

console.log(events,eventsKey)this.setData({"events":events, "eventsKey":eventsKey

})

},

处理之后活动为:

按照

event.category对活动进行分类

eventsKey筛选出活动类型中数量大于4的显示

3、点击选择类型时间,跳转到筛选页面

3.1在筛选页面生命周期onload中

onLoad: function(options) {

console.log(options)var windowWidth =app.globalData.windowWidthvar windowHeight =app.globalData.windowHeight

console.log(windowHeight)//获取到当前窗口的宽和高

var locId = options.locId; //得到当前的城市id

var eventType =options.type;//自定义一个对象,活动种类

var typeCategory ={"all": { "id": "all", "name": "all", "title": "全部"},"music": { "id": "music", "name": "music", "title": "音乐"},"film": { "id": "film", "name": "film", "title": "电影"},"drama": { "id": "drama", "name": "drama", "title": "戏剧 "},"commonweal": { "id": "commonweal", "name": "commonweal", "title": "公益"},"salon": { "id": "salon", "name": "salon", "title": "讲座 "},"exhibition": { "id": "exhibition", "name": "exhibition", "title": "展览"},"party": { "id": "party", "name": "party", "title": "聚会"},"sports": { "id": "sports", "name": "sports", "title": "运动"},"travel": { "id": "travel", "name": "travel", "title": "旅行"},"course": { "id": "course", "name": "course", "title": "课程"}

};//自定义时间对象

var dateCategory ={"future": { "id": "future", "name": "future", "title": "全部"},"today": { "id": "today", "name": "today", "title": "今天"},"tomorrow": { "id": "tomorrow", "name": "tomorrow", "title": "明天"},"weekend": { "id": "weekend", "name": "weekend", "title": "周末"},"week": { "id": "week", "name": "week", "title": "近期"},

};//全局保存的活动类型信息,travel:{id: "16", name: "travel", title: "旅行", color: "#cccc99"}

var g_eventCategory =app.globalData.eventCategory;

console.log(g_eventCategory)this.setData({"locId":locId, //当前的城市id

"typeCategory": typeCategory, //上面自定义的活动类型对象

"dateCategory": dateCategory, //上面自定义的时间类型对象

"g_eventCategory": g_eventCategory, // "windowWidth": windowWidth,"windowHeight": windowHeight

})//请求活动列表,

this.getEventListData();

}

3.2:根据当前的城市ID, type, data请求数据

getEventListData:function(){var that = this;var offset = that.data.eventsData["offset"]||0;

console.log(offset)//当前的活动条数

var total = that.data.eventsData['total']||999;//总共的活动数目

if(offset>=total){return;

}

wx.showToast({

title:'加载中',

icon:'loading',

duration:10000});var params = "?"

this.data.locId && (params += "loc=" +this.data.locId)this.data.type && (params +="&&type=" + this.data.type)this.data.date && (params +="&&day_type=" +this.data.date)var url = app.globalData.doubanBase + app.globalData.event_list_url + params + "&&start=" + offset + "&&count=5";

console.log(url)

wx.request({

url: url,

method:'GET',

header:{'content-type':'json'},

success:function(res){var data = res.data //得到城市的所有活动

console.log(data)

that.processEventListData(data)

}

})

}

3.3对请求到的活动进行处理

processEventListData:function(data){var list = this.data.eventsData["event"]||[];var offset = this.data.eventsData["offset"]||0;var total = data.total;//总条数

console.log(data.events.length)

offset+=data.events.length;//console.log(offset)

for(let idx indata.events){var event =data.events[idx]var time_str =event.time_strvar time =""

//取出时间里面的日期

if(typeof time_str =="string"){var time_arr = time_str.split(" ");

time= time_arr[0]

}var temp ={

id: event.id,

image: event.image,

loc_name: event.loc_name,

owner: event.owner,

category: event.category,

title: event.title,

wisher_count: event.wisher_count,

has_ticket: event.has_ticket,

content: event.content,

can_invite: event.can_invite,

time_str: time,

album: event.album,

participant_count: event.participant_count,

tags: event.tags,

image_hlarge: event.image_hlarge,

begin_time: event.begin_time,

price_range: event.price_range,

geo: event.geo,

image_lmobile: event.image_lmobile,

loc_id: event.loc_id,

end_time: event.end_time,

address: event.address,

};

list.push(temp)

}var readyData ={}

readyData["eventsData"]={"events":list,"offset":offset,"total":total

}this.setData(readyData)

console.log(this.data)

},

3.4、类型和事件切换:

(1)html代码:

如果当前的type==all就显示类型,并且让当前字体不高亮

如果当前日期为future显示时间,并且让当前时间不高亮

{{type=='all'?'类型':g_eventCategory[type].title}}

{{date == 'future' ? '时间':dateCategory[date].title}}

地点

{{eventType.title}}

(2)为类型和时间分别注册点击事件:

resetMenuTap: function () {

var readyData = { "isTypeTap": false, "isDateTap": false }

this.setData(readyData)

},

/*是否显示选择类型*/handleType:function(){this.setData({"showCategory":true, //控制是否显示下面的子选项,true为显示

"eventCategory": this.data.typeCategory, //所有的类型

"current":this.data.type //当前的类型

})this.resetMenuTap()this.setData({"isTypeTap": true //是否点击类型选项

})

},

为时间注册点击事件:

resetMenuTap: function () {

var readyData = { "isTypeTap": false, "isDateTap": false }

this.setData(readyData)

},

/*选择显示时间*/handleTime:function(){this.setData({"showCategory": true, //控制是否选择下面的子选项

"eventCategory":this.data.dateCategory, //日期类型

"current":this.data.date //当前时间

})this.resetMenuTap();//每次点击都让以前的置为false

this.setData({"isDateTap":true})

console.log(this.data.eventCategory)

},

切换的时候子标签也不一样是因为,点击日期的时候eventCategory和current里面存放的是日期对象, 点击时间的时候eventCategory里面存放的是时间对象。

3.5、对子标签进行处理:

下面显示的内容最开始是显示的所有的类型,选择不同的子标签就会筛选出不同的类型,点击某个子标签的时候将当前对应的, 类型的id,name和title传过去。

选择类型时:

eventCategory:

选择时间时:

{{eventType.title}}

/*点击某个子类*/handleCategory:function(event){var id =event.currentTarget.dataset.id;

console.log(id)

console.log(this.data.isTypeTap)

console.log(this.data.isDateTap)var readyData = {"showCategory":false} //点击子标签的时候,将当前的种类选择隐藏

this.data.isTypeTap && (readyData["type"]= id) //设置type this.data.isDateTap && (readyData["date"]=id)//设置date

readyData["eventsData"]={}this.setData(readyData)

console.log(this.data.date)this.getEventListData(); //根据对应的id type date请求活动信息this.resetMenuTap(); //每次点击之后重置当前状态

},

三、总结

json 微信小程序 筛选_微信小程序(同城小程序)_总结二(筛选功能)相关推荐

  1. 同城信息小程序服务器,同城小程序正式上线,这大概是目前信息量最大的小程序了...

    原标题:同城小程序正式上线,这大概是目前信息量最大的小程序了 同城小程序已经正式上线了,编辑部小陈在第一时间就对同城小程序进行了体验.并在这里给大家就同城小程序的使用做一个全面的介绍. 编辑部小陈先是 ...

  2. 微信公众平台接口调试工具json格式不对怎么搞_微信小程序 开发插件

    开发插件 开发插件前,请阅读了解 <小程序插件接入指南> 了解开通流程及开放范围,并开通插件功能.如果未开通插件功能,将无法上传插件. 创建插件项目 插件类型的项目可以在开发者工具中直接创 ...

  3. 黑马优购_微信小程序

    黑马优购_微信小程序项目 介绍 2021年5月6日-2021年5月12日在校参加微信小程序培训,由黑马讲师授课,能够利用微信提供的组件和API实现轮播图.授权用户信息.上拉加载更多等功能,由于之前对u ...

  4. 微信小程序云开发用户身份登录_微信小程序+云开发实现欢迎登录注册

    前段时间和同学一起做了一个小程序,用来参加学校的比赛,完成后把项目内容分割一下,贴到博客上面,算是学习记录和总结吧. 因为是学生党,而且并没有很大的需要,所以选择了微信小程序为开发者提供的" ...

  5. api 定位 微信小程序 精度_微信小程序城市定位(借助百度地图API判断城市)

    概述 微信小程序提供一些API(地址)用于获取当前用户的地理位置等信息,但无论是wx.getLocation,还是wx.chooseLocation均没有单独的字段表示国家与城市信息,仅有经纬度信息. ...

  6. 微信小程序python自动化测试_微信小程序的自动化测试框架

    微信小程序的自动化测试框架 微信发布了小程序的自动化测试框架Minium,提供了多种运行验证方式,其特点: 支持一套脚本,iOS & Android & 模拟器,三端运行 提供丰富的页 ...

  7. api 定位 微信小程序 精度_微信小程序开发知识点集锦

    一 小程序的生命周期 代码生命周期就是一个对象的生老病死,通常指程序从创建.开始.暂停.唤起.停止.卸载的过程.小程序的生命周期又可分为应用生命周期和页面的生命周期,先单独分析,在结合两者分析 应用生 ...

  8. 页面生命周期_微信小程序的生命周期学习笔记-应用篇

    在我们学习微信小程序的过程当中,我们会参考很多资料.在这些资料中,我们经常能够看到"生命周期"四个字,在前面的课程中也提到过.在这里做一个说明. 生命周期是一类函数的统称,这些函数 ...

  9. 后台接收数组_微信小程序如何与后台api接口进行数据交互(微信报修小程序源码讲解七)...

    完成用户授权登录逻辑后,接下来的开发工作大部分都是与后台 api 接口的交互,本节我们详细讲解一下小程序如何与 api 进行交互 . 小程序如何发送 http/https 请求到后台? 小程序请求 h ...

  10. iconpath 微信小程序_微信小程序开发(全局配置文件)

    目录: papes字段window字段tabbar字段 微信小程序中全局配置文件指:app.json文件,该文件通过微信开发者工具新建项目后会自动生成,无需自己手动创建.本文主要来了解一下全局配置文件 ...

最新文章

  1. 第15章 关于本软件
  2. python实现抓取必应图片设置桌面
  3. 魔兽世界 服务器维护,魔兽世界8.0:服务器崩溃紧急维护三小时 网易这次得背大锅!...
  4. boost::geometry::strategy::distance::pythagoras用法的测试程序
  5. MYSQL复制的几种模式
  6. 4g的服务器mysql配置文件,服务器物理内存16G mysql数据库my.cnf配置及参数说明
  7. CF 961E Tufurama
  8. v380云存储如何查询_使用 JuiceFS 在云上优化 Kylin 的存储性能
  9. 浅谈Java两种并发类型——计算密集型与IO密集型
  10. 2014手机号码归属地数据库
  11. 【场景化解决方案】金蝶凭证信息与OA审批集成
  12. 课后作业4:个人总结
  13. windows进程管理器_探究 Process Explorer 进程树选项灰色问题
  14. [C/C++11]_[初级]_[如何转换带井号的#十六进制颜色字符串到数值]
  15. 3dmax2022 导不出datasmith格式文件
  16. 我的世界java版1.7.10咋刷物品,1.7指令方块刷自定义药水教程
  17. java swing 网格布局
  18. 计算机应用中兴5G通讯是什么,中兴通讯自曝5G成绩单:承建全国三成以上5G网络...
  19. 重庆python好找工作吗_在重庆大学城呆四年是怎样的体验?
  20. 学习ASP.NET + MVC(四)

热门文章

  1. 中央财经大学创新创业中心主任尚超:大数据技术在防范虚假发票中的应用
  2. Python中文社区征稿,最高1000元/篇!
  3. PID控制器原理详解
  4. AI为什么救不了“想上天”的猪?
  5. Zinc 全文搜索引擎Elasticsearch轻量级替代品
  6. 孩子学习arduino好还是单片机好
  7. 匈牙利算法与python实现
  8. Ebean报错java.lang.ClassCastException: com.project.model.xxx cannot be cast to com.project.model.xxx
  9. 学习 STM32之九轴姿态传感器(BWT901CL)串口通信读取数据
  10. 数实融合激变时刻,与长期主义同行