微信小程序实现搜索功能


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 相关文章推荐
JavaScript Event学习第九章 鼠标事件
Feb 08 Javascript
IE6下js通过css隐藏select的一个bug
Aug 16 Javascript
jQuery实现切换页面布局使用介绍
Oct 09 Javascript
jQuery之end()和pushStack()使用介绍
Feb 07 Javascript
node.js中module.exports与exports用法上的区别
Sep 02 Javascript
关于javascript的一些知识以及循环详解
Sep 12 Javascript
Javascript中作用域的详细介绍
Oct 06 Javascript
AngularJS模仿Form表单提交的实现代码
Dec 08 Javascript
原生js实现简单的链式操作
Jul 04 Javascript
深入理解js 中async 函数的含义和用法
May 13 Javascript
微信小程序自定义组件之可清除的input组件
Jul 17 Javascript
JavaScript实现猜数字游戏
May 20 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
PHP开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
offsetHeight在OnLoad中获取为0的现象
2013/07/22 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
Jquery getJSON方法详细分析
2013/12/26 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
2017/11/30 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
[54:15]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第二场2月1日
2021/03/11 DOTA
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
Python中return语句用法实例分析
2015/08/04 Python
Python 多线程抓取图片效率对比
2016/02/27 Python
Python科学画图代码分享
2017/11/29 Python
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
78行Python代码实现现微信撤回消息功能
2018/07/26 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
详解rem 适配布局
2018/10/31 HTML / CSS
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
俄罗斯品牌服装和鞋子在线商店:BRIONITY
2020/03/26 全球购物
优秀食品类广告词
2014/03/19 职场文书
一年级小学生评语
2014/04/22 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书
我爱我班主题班会
2015/08/13 职场文书
事业单位岗位说明书
2015/10/08 职场文书
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS