美文网首页
7、Vue Todolist双向数据绑定 3.0(带缓存)

7、Vue Todolist双向数据绑定 3.0(带缓存)

作者: msqt | 来源:发表于2019-03-05 12:08 被阅读0次

    (刷新数据不丢失)


    <template>
    <div id="app">
    <input type="text" v-model="todo" v-on:keydown="addObj2($event)">
    <button @click="addObj()">+添加</button>



    <ul>
    <h3>已完成</h3>

    <li v-for="(item,key) in todoList" v-if="item.isdo"><input type="checkbox" v-model="item.isdo" @change="Change()">{{item.todo}} <button @click="deleteObj(key)">删除</button></li>
    </ul>


    <ul>
    <h3>未完成</h3>
    <li v-for="(item,key) in todoList" v-if="!item.isdo" v-bind:class="{'Done':!item.isdo}"><input type="checkbox" v-model="item.isdo" @change="Change()">{{item.todo}} <button @click="deleteObj(key)">删除</button></li>
    </ul>
    <router-view/>
    </div>
    </template>

    <script>
    export default {
    name: 'App',
    data (){
    return{
    todo:'',
    todoList:[],
    isdo:true,
    }
    },
    methods:{//用于放置自定义方法
    addObj(){
    if(!Object.is(this.todo,'')){
    let obj={};
    [obj.todo,obj.isdo]=[this.todo,this.isdo];
    this.todoList.push(obj);
    }
    this.todo='';
    localStorage.setItem('history',JSON.stringify(this.todoList));//将'this.list'以字符串的形式缓存在本地。
    },addObj2(e){
    if(e.keyCode===13){
    let obj={};
    [obj.todo,obj.isdo]=[this.todo,this.isdo];
    this.todoList.push(obj);
    this.todo='';
    localStorage.setItem('history',JSON.stringify(this.todoList));
    }
    }
    ,deleteObj(key){
    this.todoList.splice(key,1);//splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
    //arrayObject.splice(index,howmany,item1,.....,itemX):index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。item1, ..., itemX 可选。向数组添加的新项目。
    localStorage.setItem('history',JSON.stringify(this.todoList));
    },Change(){
    localStorage.setItem('history',JSON.stringify(this.todoList));
    }
    },mounted(){//生命周期函数(这个是页面刷新就会触发的函数)
    let todoList = JSON.parse(localStorage.getItem('history'));//将缓存在本地的'history'字符串重新解析成对象。
    if(todoList){//如果'list'存在,执行以下函数
    this.todoList=todoList;
    }
    }
    }
    </script>

    <style>

    app {

    font-family: 'Avenir', Helvetica, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    color: #2c3e50;
    margin-top: 60px;
    }
    .Done{
    background: #ccc;
    }
    </style>


    image.png

    相关文章

      网友评论

          本文标题:7、Vue Todolist双向数据绑定 3.0(带缓存)

          本文链接:https://www.haomeiwen.com/subject/arunuqtx.html