• 8. Vue3 中的模块化以及封装Storage实现todolist 待办事项 已经完成的持久化


    一、Vue3.x 实现一个完整的toDoList(待办事项) 以及类似京东App搜索缓存数据功能

    image-20201028154224503.png image-20201028154231727.png

    二、 localStorage里面的方法

    localStorage.setItem(key,value)
    
    localStorage.getItem(key)
    
    localStorage.removeItem(key);
    
    localStorage.clear();

    三、封装localStorage

    1、新建models/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、代码

    <template>
    <h2>Vue实现TodoList</h2>
    <div class="todolist">
        <input type="text" v-model="todo" @keyup.enter="addData()" />
        <hr />
        <h4>正在进行</h4>
        <ul>
            <template v-for="(item, index) in list" :key="index">
                <li v-if="!item.checked">
                    <input type="checkbox" v-model="item.checked" @change="setTodolist()" /> {{ item.title }}----
                    <button @click="deleteData(index)">删除</button>
                </li>
            </template>
        </ul>
    
        <h4>已经完成</h4>
        <ul>
            <template v-for="(item, index) in list" :key="index">
                <li v-if="item.checked">
                    <input type="checkbox" v-model="item.checked" @change="setTodolist()" /> {{ item.title }}----
                    <button @click="deleteData(index)">删除</button>
                </li>
            </template>
        </ul>
    </div>
    </template>
    
    <script>
    import storage from './models/storage';
    
    export default {
        data() {
            return {
                todo: "",
                list: [],
            };
        },
        methods: {
            addData() {
                this.list.push({
                    title: this.todo,
                    checked: false,
                });
                this.todo = "";
                storage.set("todolist", this.list);
            },
            deleteData(key) {
                // alert(key)
                this.list.splice(key, 1);
                storage.set("todolist", this.list);
            },
            setTodolist() {
                storage.set("todolist", this.list);
            }
        },
        //页面加载的时候触发的方法
        mounted() {
            let todolist = storage.get("todolist");
            if (todolist) {
                this.list = todolist;
            }
            console.log("页面加载的时候触发的方法");
        }
    };
    </script>
    
    <style lang="scss">
    h2 {
        text-align: center;
    }
    
    .todolist {
        width: 500px;
        border: 1px solid #eee;
        margin: 0 auto;
        padding: 20px;
    
        h3 {
            color: red;
            font-size: 40px;
        }
    }
    </style>
  • 相关阅读:
    因文件夹取名为system才导致的错误
    如何排除一些不需要SVN版本管理的文件和目录
    ext
    svn忽略文件和文件夹
    TortoiseSVN设置忽略的文件类型或文件夹
    X++学习(一)
    X++学习(三)
    X++学习(二)
    X++学习(四)
    X++学习(五)
  • 原文地址:https://www.cnblogs.com/guxia/p/14391198.html
Copyright © 2020-2023  润新知