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 相关文章推荐
Web版彷 Visual Studio 2003 颜色选择器
Jan 09 Javascript
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
Dec 06 Javascript
js淡入淡出焦点图幻灯片效果代码分享
Sep 08 Javascript
xtemplate node.js 的使用方法实例解析
Aug 22 Javascript
Bootstrap对话框使用实例讲解
Sep 24 Javascript
微信小程序开发入门基础教程
Apr 19 Javascript
在create-react-app中使用css modules的示例代码
Jul 31 Javascript
node.js基于socket.io快速实现一个实时通讯应用
Apr 23 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
Jul 18 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 Javascript
详解JavaScript 的执行机制
Sep 18 Javascript
Js跳出两级循环方法代码实例
Sep 22 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
php MessagePack介绍
2013/10/06 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
php输入流php://input使用浅析
2014/09/02 PHP
php实现的双色球算法示例
2017/06/20 PHP
PHP实现微信对账单处理
2018/10/01 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
Nigma vs AM BO3 第一场2.13
2021/03/10 DOTA
escape、encodeURI 和 encodeURIComponent 的区别
2009/03/02 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
全面解析Bootstrap手风琴效果
2020/04/17 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
2017/09/28 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
重命名批处理python脚本
2013/04/05 Python
深入解析Python中的list列表及其切片和迭代操作
2016/03/13 Python
windows系统下Python环境的搭建(Aptana Studio)
2017/03/06 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
Python中format()格式输出全解
2019/04/12 Python
Django Celery异步任务队列的实现
2019/07/24 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
python线程中的同步问题及解决方法
2019/08/29 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
Python读取yaml文件的详细教程
2020/07/21 Python
pytorch __init__、forward与__call__的用法小结
2021/02/27 Python
养殖人员的创业计划书范文
2013/12/26 职场文书
关于感谢信的范文
2015/01/23 职场文书
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
详解Java实现数据结构之并查集
2021/06/23 Java/Android