zoukankan      html  css  js  c++  java
  • vue+mongoose+node.js项目总结第五篇_localStorage保存历史记录

    一、前言                                                                           

                              1、保存历史搜索记录也是一个常用的功能。

                              2、两种比较流行的历史记录保存的方法:

                                            localstorage: https://developer.mozilla.org/zh-CN/docs/Web/API/Window/localStorage

                                            sessionstorage: https://developer.mozilla.org/zh-CN/docs/Web/API/Window/sessionStorage

                              3、几个容易混淆的东西:cookie、session、localStorage、sessionStorage

                                   https://www.cnblogs.com/pengc/p/8714475.html

    二、主要内容                                                                    

    1、准备篇

          在vue-cli脚手架中为了让代码有更高的可读性、可以将造作web Storage的代码单独封装在一个js文件中

          

    2、localStorage中封装了更新、删除、清空localStorage的方法

         注意点:localStorage中不能存储数组、所以在保存的时候需要将数组转化为字符串的形式这里使用:JSON.stringify()

    /*
    updateSearch()思路:
              1)需要一个数组来存放每次搜索的东西
    
              2)每次调用update方法的时候先看看本地是否已经存在保存历史搜索记录的数组
            
              3)如果已经存在就直接追加,如果还不存在就新建
         
              4) 将搜索数组存在localstorage中
    
    */
    
    
    export function updateSearch(searchval) {
      let storage = window.localStorage;
      if (storage.search) { //storage里面是否有search保存历史记录的数组
        let search = JSON.parse(storage.search); //取出历史记录search数组,并且将他转化为数组
    
        let index = search.indexOf(searchval); //在search数组里面查找是否有输入的searchval
        if (index != -1) { //找到了,
          search.splice(index, 1);//删除之前存的那一个
          search.unshift(searchval);//在数组的最前面插入刚刚输入的
        } else {//没有找到
          if (search.length <= 7) { //如果search数组小于7
            search.unshift(searchval);//将刚刚查找的searchval插入到数组的最前面
          } else {//search里面已经大于7
            search.splice(search.length-1, 1);//删除最后一个
            search.unshift(searchval);//将刚刚输入的插入到数组的最前面
          }
        }
        search = JSON.stringify(search); //将数组转化成字符串存入localstorage中,因为localStorage不支持保存数组
        storage.setItem('search', search);
      } else {//如果没有
        let search = JSON.stringify([searchval]);
        storage.setItem('search', search);//如果没有就设置一个search数组
      }
    }
    
    //删除某一个历史记录
    export function deleteOne(index) {
      let storage = window.localStorage;
      let search = JSON.parse(storage.search);//search转化为数组
      search.splice(index,1);
      search = JSON.stringify(search);
      storage.setItem('search', search); //保存
    }
    //清除所有历史记录
    export function clear() {
      let storage = window.localStorage;
      let search = JSON.stringify([]); //清除置为的时候将数组
      storage.setItem('search', search);
    }

    3、使用

    第一步:在需要的组件页面按需加载

      import {updateSearch} from '../../common/js/localStorage'

    第二步:每次调用搜索方法的时候就更新一下历史记录数组

      //搜索函数
          getSearchList(){
            updateSearch(this.searchText);//将当前的文字存入搜索列表
    
            this.$axios.get(`/api/search?searchText=${this.searchText}`).then((res) => {
             this.user = res.data.user;
              this.moodList = res.data.moodList;
    
             if (this.user||this.moodList.length){
                this.resNo = false;
              }else {
                this.resNo = true;
              }
              console.log(res)
            })
          },

    第三步:删除和清空调用

     methods:{
          getList(){//得到当前locallStorage中存储的搜索列表
            if (window.localStorage.search){
              this.searchList = JSON.parse(window.localStorage.search);
            }
          },
          _deleteOne(index){
            deleteOne(index);
            this.getList();
          },
          _clear(){
            clear();
            this.getList();//这里记得实时获取当前的历史搜索数组
          }
        }

     

  • 相关阅读:
    collect_mesh_vertexs input_poly
    模型变形第一版 (模型包裹)
    模型变形第一版,(射线完成)
    对于法线包裹的 操作方法, 觉得用mesh 的点的法线方向,比poly的法线方向好使。
    gt_2_collect_mesh_vertexs
    好的写法 数组唯一化, 这个是多么的简单,。
    模型变形第一版(模型变形)
    include 使用形式
    MySQL用户权限管理
    mysql load data infile的使用
  • 原文地址:https://www.cnblogs.com/xxm980617/p/11479398.html
Copyright © 2011-2022 走看看