(三)微信小程序首页的分类功能和搜索功能的实现笔记
就在昨天,微信宣布了微信小程序开发者工具新增“云开发”功能
下载最新的开发者工具,现在无需服务器即可实现小程序的快速迭代!
分类功能和搜索功能的效果图

1.首页分类功能的实现
boxtwo方法(.js文件)
boxtwo: function (e) {
var index = parseInt(e.currentTarget.dataset.index)
this.setData({
HomeIndex: index
})
},
当在首页点击 分类导航时,会触发这个方法,并传回当前点击时的index值。
这个方法实现的是将.wxml文件传来的index值赋给HomeIndex。
class="boxtwo-tab-nav {{HomeIndex == 0 ?'on':''}}"
.wxss样式文件
.boxtwo-tab-nav{
display: inline-block;
width: 20%;
height: 90rpx;
line-height: 90rpx;
border-bottom: 1rpx solid #ededed;
box-sizing: border-box;
text-align: center;
color: black;
font-size: 30rpx
}
这样就实现了首页 当前点击的分类 呈现出 被选中的样式。 然后在视图层根据HomeIndex的不同,加载对应的数据。
<view wx:if="{{HomeIndex == 1}}" >
<block wx:for="{{shareList}}" wx:key="*this">
<navigator url='../../pages/shareDetail/shareDetail?id={{item.id}}' hover-class="navigator-hover">
<view class='imgs'>
<image src="{{item.img}}" background-size="cover" mode="scaleToFill"></image>
</view>
<view class='infos'>
<view class="title">{{item.title}}</view>
<view class="date">{{item.cTime}}</view>
</view>
</navigator>
</block>
</view>
<navigator></navigator>组件实现的是点击当前文章时传出id到详情页面(detail)。这样就把首页的文章列表和文章的详情页面一一对应起来了。
detail.js文件
onLoad: function (options) {
var that = this
wx.request({
url: 'http://localhost:81/weicms/index.php?s=/addon/School/School/getDetail',
data: {id:options.id},
header: {
'content-type': 'application/json'
},
success: function (res) {
wx.setStorage({
key: 'info',
data: res.data,
})
that.setData({
info: res.data
})
}
})
}
2.搜索功能的实现
.wxml文件
<view class='search-view'>
<input class='input' confirm-type="search" maxlength="30" bindinput='wxSearchInput' value='{{keyword}}' bindconfirm='wxSearchFn' bindfocus="wxSerchFocus" bindblur="wxSearchBlur" placeholder='请输入搜索内容'></input>
<button class='search' bindtap="wxSearchFn" hover-class='button-hover'>搜索</button>
</view>
JavaScript indexOf() 方法
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
key为搜索的关键字,res.data[i].title为首页列表的标题。使用indexOf()方法时,
当满足了(res.data[i].title.indexOf(key) >= 0)说明输入的关键字在文章列表中
也有相同的关键字,然后arr.push(res.data[i]),这样就把筛选出来的文章放在了临时数组arr中了
//搜索方法 key为用户输入的查询字段
search: function (key) {
/*console.log('搜索函数触发')*/
var that = this;
var newsList = wx.getStorage({
key: 'newsList',
success: function (res) {//从storage中取出存储的数据*/
/*console.log(res)*/
if (key == '') {//用户没有输入 全部显示
that.setData({
newsList: res.data
})
return;
}
var arr = [];//临时数组 用于存放匹配到的数据
for (let i in res.data) {
if (res.data[i].title.indexOf(key) >= 0) {//查找
arr.push(res.data[i])
}
}
if (arr.length == 0) {
that.setData({
newsList:[]
}) } else {
that.setData({
newsList: arr//在页面显示找到的数据
})
} }
})
}
//搜素时触发,调用search: function (key),传入输入的e.detail.value值
wxSearchInput: function (e) {
this.search(e.detail.value); }
(三)微信小程序首页的分类功能和搜索功能的实现笔记的更多相关文章
- WordPress版微信小程序3.1.5版的新功能
产品的完善是无止境,每过段时间就会发现产品的新问题,使用的人越多,提的需求也会越多,我听得最多的一句话就是:如果加上某某功能就完美了.其实,完美是不存在的,每个人的视角不一样,完美的定义也是不一样的. ...
- 微信小程序使用同声传译实现语音识别功能
我使用同声传译语音识别功能是为了实现微信小程序首页的语音搜索功能,如果你也是那么恭喜你,你可以ctrl+c.ctrl+v再改一改,如果你不是那么你也不要着急的走可以看完我的文章会对你有所帮助! 首先是 ...
- 微信小程序wx.showActionSheet调用客服信息功能
微信小程序wx.showActionSheet调用客服消息功能 官方文档的代码: wx.showActionSheet({ itemList: ['A', 'B', 'C'], success (re ...
- 全栈项目|小书架|微信小程序-首页水平轮播实现
首页效果 首页功能主要有 搜索(下篇文章介绍) 图书列表 图书列表 分析一波: 列表是水平滑动 点击列表会有按压效果:布局整体缩小 每个布局的信息从上到下排列分别是:图片.书名.作者.出版社 每个布局 ...
- 微信小程序开发——开发者工具中素材管理功能使用的注意事项
为什么使用“素材管理”: 微信小程序环境中本地资源图片是无法通过 WXSS 获取的,可以使用网络图片,或者 base64,或者使用<image/>标签.. 当然,如果不想这么麻烦,你可能会 ...
- 微信小程序首页index.js获取不到app.js中动态设置的globalData的原因以及解决方法
前段时间开发了一款微信小程序,运行了也几个月了,在index.js中的onLoad生命周期里获取app.js中onLaunch生命周期中在接口里动态设置的globalData一直没有问题,结果昨天就获 ...
- 微信小程序转发商品的详情页 + 转发功能(传参)
1.微信小程序转发传参,利用的还是onShareAppMessageapi 2.利用的还有json转换 JSON 是用于存储和传输数据的格式. JSON 通常用于服务端向网页传递数据 函数 描述JSO ...
- 微信小程序简单的数据表格及查询功能
简介: 此项目是一个前后端分离的小demo, 开发工具:idea+微信小程序开发工具 前端:界面布局样式和js的跳转 后端:依靠SpringBoot的业务逻辑层 项目的码云地址: https://gi ...
- 微信小程序+腾讯云直播的实时音视频实战笔记
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
随机推荐
- vue 使用localStorage解决vuex在页面刷新后数据被清除的问题
通常,我们在使用vue编写页面时,会需要使用vuex在组件间传递(或者说共同响应)同一个数据的变化.例如:用户的登录信息. 下面,我们使用传递用户登录信息的例子来一步步解决这个问题. 首先,我们的第一 ...
- MySql数据库在NodeJS中简单的基本操作
阅读目录 一:连接数据库 二:数据的增删改查操作 2.1 数据库新增和查询数据 2.2 获取该数据的主键值 2.3 多语句查询 回到顶部 一:连接数据库 const mysql = require(' ...
- 理论篇-Java中一些零碎的知识点
1. Java中length,length方法,size方法区别 length属性:用于获取数组长度. length方法:用于获取字符串长度. size方法:用于获取泛型集合有多少个元素. 2. is ...
- P5239 回忆京都(洛谷3月月赛T2)
题目描述 射命丸文在取材中发现了一个好玩的东西,叫做组合数. 组合数的定义如下:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合.所有组合的数量,就是组合数 ...
- Java多线程之ReentrantLock与Condition
一.ReentrantLock 1.ReentrantLock简介 ReentrantLock是一个可重入的互斥锁,又被称为“独占锁”.ReentrantLock 类实现了 Lock ,它拥有与 sy ...
- Surging1.0发布在即,.NET开发者们,你们还在等什么?
Surging1.0发布在即,.NET开发者们,你们还在等什么? 开源,是近三十年来互联网经久不衰的话题.它不仅仅是一种技术分享的形态,更是一种开放,包容,互利共赢的互联网精神. 不到30年前,大神林 ...
- 二十八、layui的日历组件使用
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Sql Server2008如何让外网访问自己的数据库
1.打开 Sql Server配置管理器 2.修改Sql Server网络配置,将Tcp/IP协议修改为“已启用” 3.重启Sql Server服务即可(如果不知道怎么重启Sql Server服务,重 ...
- Shell命令-线上查询及帮助之man、help
线上查询及帮助 - man.help 1.man:获取命令的帮助信息 man命令的简单介绍 man命令是Linux系统中最核心的命令之一 ,因为通过它可以查看其它Linux命令的使用信息.当然了 ,m ...
- ckeditor,关于数据回显