• 7.模块化封装Storage实现缓存数据持久化


    1.模块化封装Storage实现缓存数据持久化

    1.在src目录下新建目录model,在model目录下新建js文件取名storage.js

    var storage={
        set(key,value){
            // 设置为本地缓存方法
          localStorage.setItem(key,JSON.stringify(value));
        },
        get(key){
            // 获取本地缓存方法
           return JSON.parse(localStorage.getItem(key)); 
        },
        remove(key){
            // 删除本地缓存方法
            localStorage.removeItem(key);
        }
    
    }
    
    export default storage;

    2.在App.vue中引用:

    <template>
      <div id="app">
        <!-- 监听键盘事件 -->
        <input type="text" v-model="todo" @keydown="AddText($event)">
        
        <br>
        <hr>
    
        <h2>未完成</h2>
        <ul>
          <li v-for="(item,index) in list" :key="index">
            <div v-if="!item.checkbox">
              <input type="checkbox" v-model="item.checkbox" @change="saveList()"> {{item.title}}---<button @click="RemoveText(index)">删除</button>
            </div>
          </li>
        </ul>
        <h2>已完成</h2>
        <ul>
          <li v-for="(item,index) in list" :key="index" class="finish">
            <div v-if="item.checkbox">
              <input type="checkbox" v-model="item.checkbox" @change="saveList()"> {{item.title}}---<button @click="RemoveText(index)">删除</button>
            </div>
          </li>
        </ul>
      
      </div>
    </template>
    <script>
    // 引入模块
    import storage from './model/storage.js';
    export default {
      name: 'app',
      data () {
        return { 
          todo:'',
          list:[],
        }
      },
      methods:{
        AddText(e){
          if(e.keyCode==13){
            this.list.push({title:this.todo,checkbox:false})
            this.todo=''
          }
          // 设置为本地缓存
          storage.set('list',this.list);    
        },
        RemoveText(key){
          this.list.splice(key,1)
          storage.set('list',this.list);
        },
        saveList(){
          storage.set('list',this.list);
        }
      },
      mounted(){
        // 生命周期函数,vue页面刷新时触发
        // 读取本地缓存
        var list=storage.get('list');
        if(list){
          this.list=list
        }
    
      }
    
    }
    </script>
    <style>
    ul li{
    list-style-type:none;
    }
    .finish{
     background-color: #eee
    }
    </style>

  • 相关阅读:
    LINQ 笔记
    关于:last-child的一点见解
    webpack 配置IP 和端口号
    echarts.制作中国地图,点击对应的省市链接到该省份的详细介绍
    关于offsetWidth innerWidth的使用
    关于mobiscroll插件的使用
    关于取url或者微信中参数的js
    上传图片
    使用默认图片替代某张图为空时的情况
    在数组中计算和的最大最小值
  • 原文地址:https://www.cnblogs.com/xuepangzi/p/11605583.html
Copyright © 2020-2023  润新知