微信小程序实现搜索功能


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 相关文章推荐
jquery 将disabled的元素置为enabled的三种方法
Jul 25 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
Apr 17 Javascript
Event altKey,ctrlKey,shiftKey属性解析
Dec 18 Javascript
jQuery中bind与live的用法及区别小结
Jan 27 Javascript
AngularJS 实现按需异步加载实例代码
Oct 18 Javascript
AngularJS Module方法详解
Dec 08 Javascript
利用JavaScript判断浏览器类型及版本
Aug 23 Javascript
jQuery属性选择器用法示例
Sep 09 Javascript
微信小程序实现MUI数字输入框效果
Jan 31 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
Oct 14 Javascript
微信小程序实现写入读取缓存详解
Aug 30 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结合ajax实现赞、顶、踩功能实例
2014/05/12 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
浅谈Javascript嵌套函数及闭包
2010/11/09 Javascript
javascript hashtable 修正版 下载
2010/12/30 Javascript
js对数字的格式化使用说明
2011/01/12 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
js单例模式详解实例
2013/11/21 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
Javascript复制实例详解
2016/01/28 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
requireJS模块化实现返回顶部功能的方法详解
2017/10/16 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
2019/08/02 jQuery
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
python计算对角线有理函数插值的方法
2015/05/07 Python
python导入时小括号大作用
2017/01/10 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
详解Python的三种拷贝方式
2020/02/11 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
高级3D打印市场:Gambody
2019/12/26 全球购物
Vilebrequin美国官方网上商店:法国豪华泳装品牌
2020/02/22 全球购物
函授大学生自我鉴定
2014/02/05 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
2015年个人自我剖析材料
2014/12/29 职场文书
领导欢迎词致辞
2015/01/23 职场文书
详解redis分布式锁的这些坑
2021/05/19 Redis
深入理解mysql事务隔离级别和存储引擎
2022/04/12 MySQL