100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > vue实现搜索框记录搜索历史_Vue 实现输入框新增搜索历史记录功能

vue实现搜索框记录搜索历史_Vue 实现输入框新增搜索历史记录功能

时间:2024-06-05 20:15:54

相关推荐

vue实现搜索框记录搜索历史_Vue 实现输入框新增搜索历史记录功能

vue实现搜索显示历史搜索记录,采用插件-good-storage

安装插件

npm install good-storage -S

在本地新建cache.js文件,该文件是关于本地存储的逻辑处理(缓存到本地的数据最大缓存15条,并且新的插入在第一位,首先得到当前的存储数据情况,将关键字存到数组中,判断如果数组中有相同的数据,则把重复的数据删除,将新的关键字存入到前面)

cache.js 文件中的代码如下

/*把搜索的结果保存下来*/

/*用export把方法暴露出来*/

/*定义存储搜索的key _search_定义内部使用的key*/

const SEARCH_KEY='_search_'

const SEARCH_MAX_LENGTH=15

/*插入方法 arr存储的数据 val传入存储的值 compare前后比较的函数 maxlen存入的最大值*/

function insertArray(arr,val,compare,maxlen){

//findIndex()函数也是查找目标元素,找到就返回元素的位置,找不到就返回-1。

const index=arr.findIndex(compare)

if(index===0){ //数据为数组中的第一个数据 不做任何操作

return

}

if(index>0){ //数组中有这条数据并且不再第一个位置

arr.splice(index,1) //删掉这个数

}

arr.unshift(val);//把这条数据存储到数组中的第一个位置上

if(maxlen && arr.length>maxlen){

//如果有条数限制并且数组的个数大于限制数

arr.pop() //方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值

}

}

//开源storage的库,对localstorage和sessionstorage的封装

import storage from 'good-storage'

export function saveSearch(query){

let searches=storage.get(SEARCH_KEY,[])

/*逻辑是最后一次搜索的结果放到搜索历史的第一个*/

insertArray(searches,query,(item)=>{

return item===query //这是传入的一个比较函数 说明query在这个数组中

},SEARCH_MAX_LENGTH)

storage.set(SEARCH_KEY,searches)

return searches

}

在对应的组件中应用的方式:

输入关键字

type="text"

ref="inputchange"

v-model="valuetext"

@keyup.enter="onSearch(true)"

@keyup.tab="onSearch(true)"

@focus="initPage"

placeholder="请输入关键字进行搜索"

/>

清除

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。