zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    dmo4解析xml
    myeclise生成webservice客户端代码
    华为QOS原理及配置
    【转载】 Jointwave零延时视频传输for FPGA/ASIC进入军工领域
    【转载】 网络性能测试工具
    【转载】 结构体大小计算
    【转载】 H264的I/P/B帧类型判断
    【转载】 IP实时传输协议RTP/RTCP详解
    【转载】 了解实时媒体的播放(RTP/RTCP 和 RTSP)
    【转载】 CSDN博客与博客园使用对比
  • 原文地址:https://www.cnblogs.com/xuepangzi/p/11605583.html
Copyright © 2011-2022 走看看