• vue.js学习笔记(2)— sessionStorage存储和获取数据


    效果图:

    上代码:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
            <title>session</title>
            <script src="https://unpkg.com/vue/dist/vue.js"></script>
            <style type="text/css">
                #session {
                    width: 600px;
                    margin: 0 auto;
                    text-align: center;
                }
            </style>
        </head>
        <body>
            <div id="session">
                <input type="text" v-on:keyup.enter="addNew()" v-model="inputValue" placeholder="请输入要保存的数据"/>
                <ul>
                    <li v-for="item in items">{{ item.name }}</li>
                </ul>
            </div>
            
            <script>
                var storeKey = "studentName";
                var storage = {
                    fetch:function(){
                        return JSON.parse(sessionStorage.getItem(storeKey) || "[]")
                    },
                    save:function(items){
                        console.log("00001");
                        sessionStorage.setItem(storeKey,JSON.stringify(items));
                    }
                }
                var vm = new Vue({
                    el:"#session",
                    data:{
                        items:storage.fetch(),
                        inputValue:""
                    },
                    methods:{
                        //向数组添加内容
                        addNew:function(){
                            this.items.push({
                                name:this.inputValue
                            }),
                            this.inputValue = null
                        }
                    },
                    watch:{
                        //监听items的变化
                        items:{
                            handler:function(items){
                                storage.save(items);
                            },
                            deep:true
                        }
                    }
                })
            </script>
        </body>
    </html>

    代码解读:

      vue实例当中的data对象中用到了读取数据的方法,但是依据vue的生命周期,data是先读取的,所以,如果把方法写到methods对象当中是会报错的,所以,我把方法写到了vue实例前的storage对象当中;然后呐,html当中keyup.enter当中的enter是事件修饰符,代表在输入完毕点击enter的时候会触发addNew()这个方法,这个方法是向空数组(items)添加数据,这当中inputValue是双向绑定的,而且为了体验度更高,enter之后把input值清空,方便下次直接输入;addNew()方法之后,虽然向数组添加了你输入的内容,但是这些内容并没有添加到我们的sessionStorage会话里面,这样的话,我们items.fetch()是取不到值的,所以要来一个监听函数,watch.items应运而生,代表着实时监控items的变化,然后通过.save()方法向sessionStorage添加数据,添加数据的时候要转化成json字符串类型,不然会报错,然后我们就可以在fetch()方法里面调用了

  • 相关阅读:
    Flutter与原生混合开发
    Android Camera2获取预览尺寸和fps范围
    Everything Docker
    上新!“春节红”等5款个性化样式任你选,浓浓年味拉满!
    “子账号”功能全新上线,助力企业开发者多人协作
    2022广东春运指南:让回家的路更顺畅一些
    企业使用员工卡登录计算机
    干货 | Dart 并发机制详解
    Dart 2.16 现已发布
    Flutter 2.10 更新详解
  • 原文地址:https://www.cnblogs.com/zxn-9588/p/8968531.html
Copyright © 2020-2023  润新知