微信小程序实现搜索功能


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 相关文章推荐
js中的scroll和offset 使用比较的实例与分析
Sep 29 Javascript
Backbone.js的Hello World程序实例
Jun 19 Javascript
基于JavaScript实现回到页面顶部动画代码
May 24 Javascript
Javascript 5种方法实现过滤删除前后所有空格
Jun 22 Javascript
arcgis for js 修改infowindow样式的方法
Nov 02 Javascript
浅谈在koa2中实现页面渲染的全局数据
Oct 09 Javascript
JavaScript实现微信号随机切换代码
Mar 09 Javascript
js 数组详细操作方法及解析合集
Jun 01 Javascript
详解webpack编译速度提升之DllPlugin
Feb 05 Javascript
微信小程序自定义导航栏(模板化)
Nov 15 Javascript
JavaScrip如果基于url实现图片下载
Jul 03 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
Oct 24 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
DISCUZ 分页代码
2007/01/02 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
摘自启点的main.js
2008/04/20 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
ExtJs纵坐标值重复问题的解决方法
2014/02/27 Javascript
table insertRow、deleteRow定义和用法总结
2014/05/14 Javascript
jQuery操作元素css样式的三种方法
2014/06/04 Javascript
JS实现可拖曳、可关闭的弹窗效果
2015/09/26 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
初识NodeJS服务端开发入门(Express+MySQL)
2017/04/07 NodeJs
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
一篇文章,教你学会Vue CLI 插件开发
2019/04/17 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
jQuery实时统计输入框字数及限制
2020/06/24 jQuery
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
详细解读Python中解析XML数据的方法
2015/10/15 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
python获取代理IP的实例分享
2018/05/07 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
2020/02/17 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
.net C#面试题
2012/08/28 面试题
大学毕业登记表自我鉴定
2013/10/09 职场文书
企业文化宣传标语
2014/06/09 职场文书
男性健康日的活动方案
2014/08/18 职场文书
学校师德师风整改措施
2014/10/27 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
如何用JS实现网页瀑布流布局
2021/04/24 Javascript
Python可视化神器pyecharts绘制水球图
2022/07/07 Python