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 ,如图,右键可以清除

  • 相关阅读:
    安装PetShop后调试的诸多问题
    初学FF(火狐)的扩展(Extensions)
    发现JavaScript中Number的toFixed()四舍五入时的一个问题,请教大虾!(原来是浏览器问题)
    PHP哪用手工配置啊。。。哎。。真是的。
    新鸟文章:foreach里的Sqlcommand(有SqlTransaction)
    说下按位异或(^)和按位与(&)的一点知识(没技术含量的)
    How browers work?
    开篇:希望结交各位,共同学习进步!
    第01章 基础知识
    20060818网摘
  • 原文地址:https://www.cnblogs.com/qingheshiguang/p/14602179.html
Copyright © 2011-2022 走看看