微信小程序结合Storage实现搜索历史效果


Posted in Javascript onMay 18, 2019

本文实例为大家分享了微信小程序实现搜索历史效果的具体代码,供大家参考,具体内容如下

实现目标

微信小程序结合Storage实现搜索历史效果

代码实现

集合wx.setStorageSync()和wx.getStorageSync()这两个同步函数来实现这个功能实际上非常简单。

<!-- wxml -->
<view class="search-box">
 <view class='icon'>
  <image src='../../assets/search.png' mode='widthFix'></image>
  <!-- 使用bindinput属性绑定getSearchKey函数获取input组件中的值-->
  <!-- 使用bindblur属性绑定routeToSearchResPage函数处理input失去焦点事件-->
  <input placeholder='搜索你想购买的商品' bindinput='getSearchKey' bindblur='routeToSearchResPage'></input>
 </view>
 <text>取消</text>
</view>
<view class='options'>
 <text>历史搜索记录</text>
 <text bindtap='clearHistory'>清空</text>
</view>
<view class='options'>
<!-- 遍历 history 数组 -->
 <text class='item' wx:for='{{history}}' data-index='{{index}}' bindtap='routeToSearchResPage'>{{item}}</text>
</view>

样式表 可无视

/* wxss */
.search-box {
 background-color: #142341;
 overflow: hidden;
 padding: 3%;
}

.search-box .icon {
 width: 80%;
 padding-left: 2%;
 background-color: #fff;
 float: left;
 border-radius: 1rem;
}

.search-box .icon image {
 width: 1rem;
 height: 1rem;
 display: block;
 margin: 0.5rem 0;
 float: left;
}

.search-box input {
 display: block;
 font-size: 0.8rem;
 height: 2rem;
 line-height: 2rem;
 float: left;
 margin-left: 5%;
}

.search-box text {
 width: 18%;
 float: left;
 color: #fff;
 line-height: 2rem;
 text-align: center;
 font-size: 0.8rem;
}

.options {
 width: 94%;
 margin: 3%;
 font-size: 0.8rem;
 color: #999;
}

.options text:last-child {
 color: #1268bb;
 float: right;
}

.options .item {
 padding: 0.2rem 0.5rem;
 background-color: #eee;
 float: left !important;
 color: #565656 !important;
 border-radius: 0.1rem;
 margin: 3%;
}

JavaScript

//index.js
Page({
 data: {
  searchKey: "",
  history: []
 },
 //获取input文本
 getSearchKey: function(e) {
  this.setData({
   searchKey: e.detail.value
  })
 },
 // 清空page对象data的history数组 重置缓存为[]
 clearHistory: function() {
  this.setData({
   history: []
  })
  wx.setStorageSync("history", [])
 },
 // input失去焦点函数
 routeToSearchResPage: function(e) {
  //对历史记录的点击事件 已忽略
  let _this = this;
  let _searchKey = this.data.searchKey;
  if (!this.data.searchKey) {
   return
  }

  let history = wx.getStorageSync("history") || [];
  history.push(this.data.searchKey)
  wx.setStorageSync("history", history);
 },
 //每次显示钩子函数都去读一次本地storage
 onShow: function() {
  this.setData({
   history: wx.getStorageSync("history") || []
  })
 }
})

本地存储可在微信开发者工具调试的Storage可见。

微信小程序结合Storage实现搜索历史效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 获取LI里的内容
Dec 17 Javascript
封装的原生javascript弹出层代码
Sep 24 Javascript
js截取固定长度的中英文字符的简单实例
Nov 22 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
Nov 23 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
Dec 12 Javascript
实践中学习AngularJS表单
Mar 21 Javascript
node.js中express中间件body-parser的介绍与用法详解
May 23 Javascript
JS原生带小白点轮播图实例讲解
Jul 22 Javascript
Angular4 ElementRef的应用
Feb 26 Javascript
Vue面试题及Vue知识点整理
Oct 07 Javascript
JS实现星星海特效
Dec 24 Javascript
vue首次渲染全过程
Apr 21 Vue.js
Fetch超时设置与终止请求详解
May 18 #Javascript
微信小程序实现搜索历史功能
Mar 26 #Javascript
微信小程序云开发修改云数据库中的数据方法
May 18 #Javascript
小程序云开发教程如何使用云函数实现点赞功能
May 18 #Javascript
微信小程序实现元素渐入渐出动画效果封装方法
May 18 #Javascript
微信小程序收货地址API兼容低版本解决方法
May 18 #Javascript
小程序云开发获取不到数据库记录的解决方法
May 18 #Javascript
You might like
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
对象失去焦点时自己动提交数据的实现代码
2012/11/06 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
PHP中error_reporting()用法详解
2015/08/31 PHP
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
javascript中数组和字符串的方法对比
2016/07/20 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
微信小程序webSocket的使用方法
2020/02/20 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
python绘制动态曲线教程
2020/02/24 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
什么是接口(Interface)?
2013/02/01 面试题
专升本个人自我评价
2013/12/22 职场文书
计算机专业求职信
2014/06/02 职场文书
摩登时代观后感
2015/06/03 职场文书
行政处罚事先告知书
2015/07/01 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
vue基于Teleport实现Modal组件
2021/05/31 Vue.js
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫