Vue+elmentUI实现搜索框保留历史记录

一、html部分

        <el-autocomplete
          class="inline-input"
           v-model="supplierParams.gChname"
          :fetch-suggestions="querySearch"
           placeholder="请输入供应商名称"
        ></el-autocomplete>

二、js部分

具体代码如下
	    data() {
	      return {
	        searchHistory: [],
	      };
	    },
          querySearch(queryString, cb) {
          // 调用 callback 返回建议列表的数据
          const searchHistory = JSON.parse(localStorage.getItem('coOrName'))
          console.log(searchHistory,queryString,'测试coOrName');
          const results = queryString ? searchHistory.filter(this.createFilter(queryString)) : searchHistory
          cb(results)
      },
      createFilter(queryString) {
          return (searchHistory) => {
              return (searchHistory.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0)
          }
      },
      // 点击搜索按钮的时候存储(可根据需要修改)
      setIntoStorage() {
          const noArr = []// 历史记录数组
          const value = this.supplierParams.gChname
          const cnoOrName = 'coOrName'
         // 检查 value 是否非空且非仅包含空格  
          if (value && value.trim() !== '') {  
            noArr.push({ value: value, type: cnoOrName });  
          }
          console.log(this.supplierParams.gChname)
          if (JSON.parse(localStorage.getItem(cnoOrName))) {
              // 判断是否已有xxx查询记录的localStorage
              if (localStorage.getItem(cnoOrName).indexOf(value) > -1) { // 判断是否已有此条查询记录,若已存在,则不需再存储
                  return
              }
              if (JSON.parse(localStorage.getItem(cnoOrName)).length >= 5) {
                  const arr = JSON.parse(localStorage.getItem(cnoOrName))
                  arr.pop()
                  localStorage.setItem(cnoOrName, JSON.stringify(arr))
              }
              localStorage.setItem(cnoOrName, JSON.stringify(noArr.concat(JSON.parse(localStorage.getItem(cnoOrName)))))
          } else { // 首次创建
              localStorage.setItem(cnoOrName, JSON.stringify(noArr))
          }
          console.log(localStorage.getItem('coOrName'))
  },

注意

在代码中,在将数据存储到本地时,注意value不要为null,否则以下代码会报错

      searchHistory.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值