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()方法里面调用了

原文地址:https://www.cnblogs.com/zxn-9588/p/8968531.html