思路:

1.浏览器缓存永久保存搜索历史数据.

2.页面初始化将数据保存到页面变量中.

3.对搜索历史记录的怎加和删除,要同步到缓存中.

----------------直接看代码----------------

*前端使用的是vue,这里只是代码片段*

1.页面的 div

<!---历史搜索begin---->
<div style="margin-top: 46px">
<div v-if="this.showFlag === true" class="search-history">
<div class="tip-words">
<div style="float: left;">
<h4>搜索历史</h4>
</div>
<div style="float: right;" @click="clearHistoryItems">
<img src="../../img/img/delete-1.png" width="16px"/>
</div>
</div>
<p style="margin-bottom: 10px">&nbsp;</p>
<div v-for="(item,index) in searchHistoryList" :key="index" @click="searchByHistoryKeyWord(item)" class="history-keywords">
&nbsp;&nbsp;{{item}}&nbsp;&nbsp;
</div>
</div>
</div>
<!---历史搜索end---->

2. vue data

data() {
return {
// 搜索历史
searchHistoryList: [],
// 标记显示搜索历史
showFlag: false,
loadShow: false
}
},

3.vue 搜索历史的一些方法

methods: {
showHistory() {
if (this.searchHistoryList.length > 0) {
this.showFlag = true
}
},
// 清空历史记录
clearHistoryItems() {
localStorage.removeItem('historyItems')
this.searchHistoryList = []
this.showFlag = false
},
// 过滤一个结果的空记录添加,过滤空搜索
appendKeywords(value) {
/**
* 1.已经有的关键词不再添加
* 2.添加到数组的首位,若超出10个则删除最后一个
* 3.添加到缓存
*/
var appendFlag = true
if (this.searchHistoryList !== null && this.searchHistoryList !== undefined && this.searchHistoryList.length > 0) {
this.searchHistoryList.forEach(function(currentValue, index) {
if (currentValue === value) {
appendFlag = false
return
}
})
// 判断-添加
if (appendFlag === true) {
// 长度判断
if (this.searchHistoryList.length >= 10) {
this.searchHistoryList.unshift(value)
this.searchHistoryList.pop()
} else {
this.searchHistoryList.unshift(value)
}
localStorage.setItem('historyItems', JSON.stringify(this.searchHistoryList))
}
} else {
this.searchHistoryList = []
this.searchHistoryList.push(value)
localStorage.setItem('historyItems', JSON.stringify(this.searchHistoryList))
}
},
searchByHistoryKeyWord(item) {
this.loadTip = ''
this.queryData.inputInfo = item
// 查询
fetchGetDataByKeyWord(item).then(response => {
// 查询赋值
this.dataList = response.data.body.data
if (this.dataList.length === 0) {
this.loadTip = '没有符合条件数据'
this.showHistory()
} else {
this.loadTip = ''
this.showFlag = false
}
})
} }

vue搜索历史记录缓存实现的更多相关文章

  1. Day12-微信小程序实战-交友小程序-优化“附近的人”页面与serach组件的布局和样式以及搜索历史记录和本地缓存*内附代码)

    回顾/:我们已经实现了显示附近的人的功能了,可以多个人看到附近的人页面了 但是还是要进行优化有几个问题:1.我们用户选择了其他的自定义头像之后,在首页可以看到头像的变化,但是在附近的人中头像会变成报错 ...

  2. js实现前端的搜索历史记录

    最近在对接前台页面(WEB端)时,产品要求需记录下客户的搜索记录,我们是前后台完全分离的项目,根本不能保存的session域中,没办法,虽然作为后台开发,遇到需求就自己研究了一通,先看一下最终效果图, ...

  3. 示例vue 的keep-alive缓存功能的实现

    本篇文章主要介绍了vue 的keep-alive缓存功能的实现,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下.如有不足之处,欢迎批评指正. Vue 实现组件信息的缓存 当我们 ...

  4. Vue计算属性缓存(computed) vs 方法

    Vue计算属性缓存(computed) vs 方法 实例 <div id="example"> <p>Original message: "{{ ...

  5. Android搜索功能的案例,本地保存搜索历史记录......

    开发的APP有一个搜索功能,并且需要显示搜索的历史记录,我闲暇之余帮她开发了这个功能,现把该页面抽取成一个demo分享给大家. 实现效果如图所示:  本案例实现起来很简单,所以可以直接拿来嵌入项目中使 ...

  6. Android用AutoCompleteTextView实现搜索历史记录提示

    简介 在我们平常上网的时候经常会用到谷歌或百度,在输入框中输入我们想要输入的信息就会出现其他与其相关的提示信息,非常方便.这种效果在 Android中是用AutoCompleteTextView实现的 ...

  7. vue页面是否缓存的两种方式

    第一种 <keep-alive> <router-view v-if="$route.meta.keepAlive"></router-view> ...

  8. layui 数据表格+分页+搜索+checkbox+缓存选中项数据

    在做数据表格的时候遇到了很多坑, 今天整理一下方便以后使用. 主要功能是使用数据表格, 做分页,做搜索,  还有checkbox,  支持全选. 当选中一些数据的时候, 数据切换页面数据在切换回来后, ...

  9. vue中如何缓存一些页面

    在vue中,有时候我们只想缓存页面中的一些组件或页面,这个时候怎么办呢,我们就需要用判断来加载keep-alive. 例如: // router.js { path: "/driving_l ...

  10. vue的组件缓存(返回页面不刷新)

    每次使用返回是页面总是会刷新 导致了一些体验上的不愉快 现在 发现vue中的一个很方便的方法还可以用来优化性能就是: keep-alive缓存组件 <router-view v-if=" ...

随机推荐

  1. springmvc配置文件中配置mybatis-plus日志输出

    1.背景 2.配置方式 如果application.properties文件格式: #sql日志logging.level.com.XX.XXX.mapper=debug如果是application. ...

  2. 破局SAP实施难题、降低开发难度,定制化需求怎样快速上线?

    前言 SAP 是全球领先的业务流程管理软件供应商之一,其提供广泛的模块化解决方案和套件,所开发的软件解决方案面向各种规模的企业,帮助客户规划和设计业务流程.分析并高效设计整个价值链,以更好的了解和响应 ...

  3. python学习之---迭代器与生成器

    什么是迭代器 可迭代对象: 可以通过for循环来实现遍历,例如list.string.dict 迭代器: 不仅可以使用for循环,还可以使用next()方法.__iter__() next():获取容 ...

  4. spring创建 JavaWeb

  5. 2024 (ICPC) Jiangxi Provincial 省赛

    2024 (ICPC) Jiangxi Provincial 省赛 前言 和队友 vp 7t,赛后补了几题. A. Maliang Learning Painting 思路 输出 a + b + c ...

  6. vscode使用说明

    # 要经常保存 # centos打开vscode方式 普通用户:[bw@localhost ~]$ /usr/share/code/bin/code 超级用户:[root@localhost shar ...

  7. Java元注解介绍

    Java四种元注解相关介绍 概述 注解从Java1.5引入以来,不断地简化我们编写代码的流程,逐渐的也成为了我们必学的一项技术.我们学习了各种注解,学习了他们的用法,学习了他们的限制,是否想过他们的组 ...

  8. 【GaussDB】应用报错 socket is not closed; Urgent packet sent to backend successfully; An I/O error occured while sending to the backend.detail:EOF Exception;

    数据库原理差异 会话空闲时间超过sesseion_time后,数据库主动断开,客户端再发起请求,就会报此类错误: 当一个会话连接长时间没有执行SQL或者活动时,会将该会话释放,可以释放缓存避免出现例如 ...

  9. 计算机图形学(第四版) PDF 中文版

    目录 图书介绍 下载地址 图书介绍 <计算机图形学(第四版)>是2014年电子工业出版社出版的图书,作者是Donald Hearn.M. Pauline Baker.Warren R. C ...

  10. Coursera Self-driving1, introduction

    有哪些 Sensors? 摄像头和激光雷达,毫米波雷达等 sensor 分类: exteroceptive (surrounding), 有 camera(Resolution, FOV, Dynam ...