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


Posted in Javascript onJanuary 15, 2019

需求描述

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

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))
   }
  }
}

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

Javascript 相关文章推荐
IE8 兼容性问题(属性名区分大小写)
Jun 04 Javascript
JSON.parse()和JSON.stringify()使用介绍
Jun 20 Javascript
JavaScript 作用域链解析
Nov 13 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
Jan 23 Javascript
thinkphp 表名 大小写 窍门
Feb 01 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
Apr 07 Javascript
老生常谈combobox和combotree模糊查询
Apr 17 Javascript
jQuery DOM节点的遍历方法小结
Aug 15 jQuery
简单介绍react redux的中间件的使用
Apr 06 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
Mar 09 Javascript
JS函数参数的传递与同名参数实例分析
Mar 16 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
Jul 26 Javascript
微信小程序实现多选删除列表数据功能示例
Jan 15 #Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
Jan 15 #Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
Jan 15 #Javascript
微信 jssdk 签名错误invalid signature的解决方法
Jan 14 #Javascript
详解从react转职到vue开发的项目准备
Jan 14 #Javascript
node全局变量__dirname与__filename的区别
Jan 14 #Javascript
微信小程序时间轴实现方法示例
Jan 14 #Javascript
You might like
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
PHP内核探索:变量存储与类型使用说明
2014/01/30 PHP
PHPCMS2008广告模板SQL注入漏洞修复
2016/10/11 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
js Calender控件使用详解
2015/01/05 Javascript
分享JavaScript监听全部Ajax请求事件的方法
2016/08/28 Javascript
如何正确解决VuePress本地访问出现资源报错404的问题
2020/12/03 Vue.js
Python中datetime模块参考手册
2017/01/13 Python
答题辅助python代码实现
2018/01/16 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
python Django的web开发实例(入门)
2019/07/31 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
vue常用指令代码实例总结
2020/03/16 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
PHP笔试题
2012/02/22 面试题
餐饮业员工工作决心书
2014/03/11 职场文书
2014感恩节演讲稿大全
2014/10/11 职场文书
学前班语言教学计划
2015/01/20 职场文书
实习单位鉴定意见
2015/06/04 职场文书
消费者理赔投诉书
2015/07/02 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS
Python如何加载模型并查看网络
2022/07/15 Python