微信小程序实现搜索功能


Posted in Javascript onMarch 10, 2020

在页面search.wxml中,定义一个input输入框以及搜索的点击按钮,分别为它们绑定点击事件handleInputChange()handleSearch()的事件,同时在它们的下面定义搜索的列表,代码如下所示:

<view class="search-header">
 <input class="search-input" bindtap="handleInputChange" />
 <view class="search-btn" bindtap="handleSearch">搜索</view>
</view>

<view>
 <view wx:for="{{list}}" wx:key="{{index}}" class="item" id="{{item.id}}" bindtap="handleItemTap">
 <view>{{ item }}</view>
 <view class="item-message">{{ item.message }}</view>
 </view>
</view>

在逻辑文件search.js中,在data中存放list的数据,为空数组,存放搜索列表的数据,同时定义staticData,在里面定义inputValue,里面为空字符串,是input输入框的值,代码如下所示:

data: {
 list: []
},
staticData: {
 inputValue: ""
}

在search.js的onLoad()生命周期函数中,调用请求数据的函数getSearchResult(),这样在一进入页面的时候就会获取到所有的数据,不过由于并没有关键字keyword,需要传空字符串,代码如下所示:

onLoad() {
 this.getSearchResult("");
 },
getSearchResult(keyword) {
 wx.request({
  url: 'xxxxxx',
  data: {
  keyword: this.staticData.inputValue
  },
  method: "POST",
  header: {
  'content-type': 'application/x-www-form-urlencoded' 
  },
  success: this.getSearchResultSucc.bind(this)
 })
},

在search.js中,定义一个响应成功后的函数getSearchResultSucc(),判断响应的数据是否存在。如果存在通过this.setData()方法将响应后的数据赋值给list,如果不存在,list仍然为空数组,代码如下所示:

getSearchResultSucc(res) {
 // console.log(res)
 if (res.data.ret) {
  const result = res.data.data;
  this.setData({
  list: result
  })
 } else {
  this.setData({
  list: []
  })
 }
}

在search.js中,定义handleInputChange()函数,这个函数也是input输入框绑定的函数,传入事件对象e,然后通过e.detail.value赋值给staticData的inputValue,代码如下所示:

handleInputChange(e) {
 this.staticData.inputValue = e.detail.value;
}

在search.js中,定义handleSearch()函数,这个函数也是之前搜索按钮所绑定的函数,在这个里面重新发起一次请求,携带keyword关键字发起请求,代码如下所示:

handleSearch (keyword) {
 this.getSearchResult(keyword)
}

如果想要点击在搜索以后显示的列表,可以在列表中绑定handleItemTap()事件,传入事件对象e,通过 e.currentTaret.id去获取到点击的id,然后再通过 wx.navigateTo()方法跳转到相应的详情页,代码如下所示:

handleItemTap(e) {
 wx.navigateTo({
  url: '/pages/detail/detail?id=' + e.currentTaret.id
 })
}

知识点补充:微信小程序云开发模糊查找功能实现

//连接数据库
const db = wx.cloud.database()
var that = this
db.collection(‘newsname').where({
//使用正则查询,实现对搜索的模糊查询
_name: db.RegExp({
regexp: value,
//从搜索栏中获取的value作为规则进行匹配。
options: ‘i',
//大小写不区分
})
}).get({
success: res => {
console.log(res)
that.setData({
search_list: res.data
})
}
})

总结

到此这篇关于微信小程序实现搜索功能的文章就介绍到这了,更多相关微信小程序搜索功能内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
改进:论坛UBB代码自动插入方式
Dec 22 Javascript
JavaScript中“基本类型”之争小结
Jan 03 Javascript
jquery实现九宫格大转盘抽奖
Nov 13 Javascript
jQuery获取DOM节点实例分析(2种方式)
Dec 15 Javascript
原生javascript实现解析XML文档与字符串
Mar 01 Javascript
JSON字符串和JSON对象相互转化实例详解
Jan 05 Javascript
jQuery实现可兼容IE6的滚动监听功能
Sep 20 jQuery
vue cli 全面解析
Feb 28 Javascript
vue-cli 构建骨架屏的方法示例
Nov 08 Javascript
微信小程序时间轴实现方法示例
Jan 14 Javascript
Vue强制组件重新渲染的方法讨论
Feb 03 Javascript
JS实现时间校验的代码
May 25 Javascript
原生JS实现烟花效果
Mar 10 #Javascript
JS实现iframe中子父页面跨域通讯的方法分析
Mar 10 #Javascript
详解vue-template-admin三级路由无法缓存的解决方案
Mar 10 #Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
Mar 10 #Javascript
js模拟实现烟花特效
Mar 10 #Javascript
JS实现放烟花效果
Mar 10 #Javascript
JS实现烟花爆炸效果
Mar 10 #Javascript
You might like
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
搜索引擎技术核心揭密
2006/10/09 PHP
PHP怎样调用MSSQL的存储过程
2006/10/09 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
PHP的swoole扩展安装方法详细教程
2016/05/18 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
javascript 另一种图片滚动切换效果思路
2012/04/20 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
2017/01/03 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
2020/07/31 Javascript
玩转python爬虫之URLError异常处理
2016/02/17 Python
高质量Python代码编写的5个优化技巧
2017/11/16 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
详解Python传入参数的几种方法
2019/05/16 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
技术总监个人的自我评价范文
2013/12/18 职场文书
校园安全广播稿范文
2014/09/25 职场文书
2015年幼儿园教研活动总结
2015/03/25 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫