Element输入框带历史查询记录的实现示例

 更新时间:2019年01月15日 09:30:14   作者:ever  
这篇文章主要介绍了Element输入框带历史查询记录的实现示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

需求描述

页面的查询框增加一下显示历史查找记录

实现及踩坑记录

使用Element带输入建议的输入框来实现此需求。用法详见官网

1. 坑1:不能直接在querySearch里返回数组,一定要调用回调函数cb来处理数据

看了一下例子,建议列表应该是个数组,然后我就在querySearch里直接返回了一个数组:

 querySearch(queryString, cb) {
  return JSON.parse(localStorage.getItem('srcOrderNoArr'))
 },

但是回到网页上却发现列表数据加载不出来

正确姿势:

 /**
 * 建议列表
 */
querySearch(queryString, cb) {
 // 调用 callback 返回建议列表的数据
 cb(JSON.parse(localStorage.getItem('srcOrderNoArr')))
}

2. 坑2:数组内数据格式有要求,格式一定要是[{value: '', xxx: ''}, {value: '', xxx: ''}, ...]

这个建议列表是根据数组内的value属性值来渲染的,所以数组内的对象一定要有value键值对。比如说是这样的:

data () {
  return {
    srcOrderNoArr: [{
      value: '', // 这个必须要有
      type: ''
    },
    {
      value: '',
      type: ''
    },
    {
      value: '',
      type: ''
    }]
  }
}
methods: {
  /**
   * 把搜索记录存入localStorage
   */
  setIntoStorage (type) {
   let self = this
   let noArr = [], // 订单号历史记录数组
    text = '', value = ''
   switch (type) {
    case 'srcOrderNo':
     text = 'srcOrderNoArr'
     value = self.srcOrderNo
     break
    case 'jobOrderNo':
     text = 'jobOrderNoArr'
     value = self.jobOrderNo
     break
    case 'cntNo':
     text = 'cntNoArr'
     value = self.cntNo
     break
    default:
     break
   }
   noArr.push({value: value, type: type})
   if(JSON.parse(localStorage.getItem(text))) { // 判断是否已有xxx查询记录的localStorage
    if(localStorage.getItem(text).indexOf(value) > -1 ) { // 判断是否已有此条查询记录,若已存在,则不需再存储
     return
    }
    if(JSON.parse(localStorage.getItem(text)).length >= 5) {
     let arr = JSON.parse(localStorage.getItem(text))
     arr.pop()
     localStorage.setItem(text, JSON.stringify(arr))
    }
    localStorage.setItem(text, JSON.stringify(noArr.concat(JSON.parse(localStorage.getItem(text)))))
   }
   else { // 首次创建
    localStorage.setItem(text, JSON.stringify(noArr))
   }
  }
}

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

相关文章

  • vue element 多图片组合预览的实现

    vue element 多图片组合预览的实现

    本文主要介绍了vue element多图片预览实现的相关资料,最近的项目中有图片预览的场景,本文就来介绍一下如何使用,感兴趣的可以了解一下
    2023-08-08
  • 关于Vue中的计算属性和监听属性详解

    关于Vue中的计算属性和监听属性详解

    这篇文章主要介绍了关于Vue中的计算属性和监听属性详解,Vue.js模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的,在模板内放入过长的或复杂的逻辑时,会让模板过重且难以维护,需要的朋友可以参考下
    2023-05-05
  • 7个很棒的Vue开发技巧分享

    7个很棒的Vue开发技巧分享

    这篇文章主要为大家整理了7个很棒的Vue开发技巧,可以帮助大家更好的理解和使用vue框架。文中的示例代码讲解详细,感兴趣的可以了解一下
    2023-02-02
  • vue中利用three.js实现全景图的完整示例

    vue中利用three.js实现全景图的完整示例

    这篇文章主要给大家介绍了关于vue中利用three.js实现全景图的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Vue-cli proxyTable 解决开发环境的跨域问题详解

    Vue-cli proxyTable 解决开发环境的跨域问题详解

    本篇文章主要介绍了Vue-cli proxyTable 解决开发环境的跨域问题详解,非常具有实用价值,需要的朋友可以参考下
    2017-05-05
  • vue实现下拉菜单效果

    vue实现下拉菜单效果

    这篇文章主要为大家详细介绍了vue实现下拉菜单效果,运用了hover显示与隐藏以及定位,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • Vue 项目中遇到的跨域问题及解决方法(后台php)

    Vue 项目中遇到的跨域问题及解决方法(后台php)

    这篇文章主要介绍了Vue 项目中遇到的跨域问题及解决方法(后台php),前端采用vue框架,后台php,具体解决方法,大家参考下本文
    2018-03-03
  • antd design table更改某行数据的样式操作

    antd design table更改某行数据的样式操作

    这篇文章主要介绍了antd design table更改某行数据的样式操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • 关于对keep-alive的理解,使用场景以及存在的问题解读

    关于对keep-alive的理解,使用场景以及存在的问题解读

    这篇文章主要介绍了关于对keep-alive的理解,使用场景以及存在的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • vue+swiper实现组件化开发的实例代码

    vue+swiper实现组件化开发的实例代码

    这篇文章主要介绍了vue+swiper实现组件化开发的相关资料,需要的朋友可以参考下
    2017-10-10

最新评论