组件单击事件修改localStorage中的购物车,组件外的购物车数量随之进行更改

将Vue赋给一个变量

var vue = new Vue({
        el:"#app",
        data:{
            f1:true,
            f2:false,
            cart:JSON.parse(localStorage.carts)
        },
        router:rou,
        created:function(){
            var tt= this;
            window.onscroll = function(){
                var scrollTop = document.querySelector("html").scrollTop;
                if(scrollTop>100){
                    tt.f2 = true;
                }else{
                    tt.f2 = false;
                }
            }
        },
        computed:{
            allcount:function(){
                var allcount = 0;
                var tt = this;
                /*
                不同页面监听在数据变更十多次后,页面会出现卡顿,故放弃

                window.addEventListener("storage", function (e) {
                    tt.cart = JSON.parse(localStorage.carts);
                });*/
                if(localStorage.carts){
                    for(key in tt.cart){
                        allcount += tt.cart[key].num;
                    }
                }
                return allcount;
            }
        }
    })

组件单击事件的最后,修改vue对象的变量,达到触动computed的效果,这时组件外与vue的computed中的addcount所绑定的页面数据会因为与自身有关的vue变量更改而变化。

vue中的有单击事件的组件:

methods:{
            addCart:function(goods){
                if(!localStorage.carts){
                    localStorage.carts = JSON.stringify({});
                }
                var cart = JSON.parse(localStorage.carts);
                if(cart[goods._id]){
                    cart[goods._id].num++;
                    localStorage.carts = JSON.stringify(cart);
                }else{
                    goods.num = 1;
                    cart[goods._id] = goods;
                    localStorage.carts = JSON.stringify(cart);
                }
                /*  将vue的变量进行更改,达到触动computed的效果 */
                vue._data.cart = JSON.parse(localStorage.carts);
            }
        },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值