zoukankan      html  css  js  c++  java
  • vue 的TodoList 小Demo

    前言:
    实现一个,在文本框中输入文字按回车键后,在下面的列表中添加一条记录,点击记录删除按钮,可以删除本条数据
    当选中一条记录,会自动调到已选中模块中

    代码如下:

    <template>
        <div>
            <input type="text" v-model="todo" @keyup.enter="addData()">
            <hr>
            <h4>未选中</h4>
            <ul>
                <li v-for="(item,index) in list" :key="index" v-show="!item.checked" @change="setTodolist()">
                    <input type="checkbox" v-model="item.checked" /> {{item.title}}------<button @click="deleteData(index)">删除</button>
                </li>
            </ul>
    <h4>已选中</h4>
    <ul>
                <li v-for="(item,index) in list" :key="index" v-show="item.checked" @change="setTodolist()">
                    <input type="checkbox" v-model="item.checked" />{{item.title}}-----------
               <button @click="deleteData(index)">删除</button>
                </li>
            </ul>
        </div>
    </template>
    
    <script>
        export default {
            data(){
                return{
                    todo:"",
                    list:[]
                }
            },
            methods:{
                addData(){
                    this.list.push({
                        title:this.todo,
                        checked:false
                    });
                    this.todo="";
                    localStorage.setItem("todolist",JSON.stringify(this.list));
                },
                deleteData(key){
                    this.list.splice(key,1)
                    localStorage.setItem("todolist",JSON.stringify(this.list));
                },
                setTodolist(){
                    localStorage.setItem("todolist",JSON.stringify(this.list));
                }
            },
            //页面加载触发的方法(生命周期函数)
            mounted(){
                //页面加载完成直接把localstorage中的数据赋值给list
                let todolist=JSON.parse(localStorage.getItem("todolist"));
                if(todolist){
                    this.list=todolist;
                }
            }
        }
    </script>
    

    其实这里的 localStorage模块可以抽离出来,然后其它页面也可以复用,具体实现如下
    1、新建一个文件夹比如 model,再创建文件 storage.js 文件
    2、把代码封装在storage.js

    const 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//暴露,其它地方可以访问到
    

    3、在需要用到的地方导入就可以了,script模块中引入

    <script>
    //引入外部定义方法
    import storage from '../models/storage'
    </script>
    

    这样demo中的代码就可以相应的更改

    localStorage.setItem("todolist",JSON.stringify(this.list));
    //改成
    storage.set("todolist",this.list);
    
    let totolist=JSON.parse(localStorage.getItem("todolist"));
    //改成
    let todolist=storage.get("todolist");
    

    查看localStorage ,如图,右键可以清除

  • 相关阅读:
    设计模式03
    设计模式02
    设计模式01
    HTTP
    C++ 编程学习(六) 函数
    C++编程学习(五) C++ 存储类
    C++编程学习(四)声明/枚举
    ROS常见问题(一) 安装ROS时sudo rosdep init指令报错 最全解决方法
    ROS常用命令或经常碰到的问题
    Ubuntu16.04 在Windows10 系统下的安装(双系统)
  • 原文地址:https://www.cnblogs.com/qingheshiguang/p/14602179.html
Copyright © 2011-2022 走看看