<template> <div > <!-- 实现回车键事情@keydown="doAdd($event)" --> <input type="text" v-model='todo' @keydown="doAdd($event)" /> <hr> <br> <h2>进行中</h2> <!-- @change="saveList()"点击文本框时发生改变机制事情 --> <ul> <li v-for="(item,key) in list" v-if="!item.checked"> <input type="checkbox" v-model="item.checked" @change="saveList()" /> {{item.title}} -- <button @click="removeData(key)">删除</button> </li> </ul> <br> <h2>已完成</h2> <ul> <li v-for="(item,key) in list" v-if="item.checked"> <input type="checkbox" v-model="item.checked" @change="saveList()" /> {{item.title}} -- <button @click="removeData(key)">删除</button> </li> </ul> <br> </div> </template> <script> import storage from './model/storage.js'; console.log(storage); export default { data () { /*业务逻辑里面定义的数据*/ return { todo:'', list:[], } }, methods:{ // 新增 doAdd(e){ // connect.log(e); //新增时直接按回车键盘显示 键位==keyCode==13 if(e.keyCode==13){ this.list.push({ title:this.todo, checked:false, }) } // 调用 组件显示 storage storage.set('list',this.list); //缓存 // localStorage.setItem('list',JSON.stringify(this.list)) }, //删除 removeData(key){ this.list.splice(key,1) //缓存 storage.set('list',this.list); // localStorage.setItem('list',JSON.stringify(this.list)) }, // 每次点击文本框checkbox改变时,从新保存一下 saveList(){ // localStorage.setItem('list', JSON.stringify(this.list)) storage.set('list',this.list); }, }, //生命周期函数,vue页面刷新就会触发的方法(和 bata methods 同级) mounted(){ // var list=JSON.parse(localStorage.getItem('list')); //调用组件使用 var list=storage.get('list'); //判断是否存在 if(list){ this.list=list; } } } </script> <style scoped > </style>
封装操作
//封装操作,localstorage 本地存储的方法,模块化文件 //封装模块方法 var storage={ set(key,value){ localStorage.setItem(key,JSON.stringify(value)); }, get(key){ return JSON.parse(localStorage.getItem(key)); }, remove(key){ localStorage.removeItem(key); } } //把storage 暴露出去 export default storage;
显示
