vue实现购物车

606 阅读1分钟
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>vue实现购物车</title>
    <script src="../js/vue221.js"></script>
    <style>
        .active{
            color:red;
        }
    </style>
</head>
<body>
    <div id="app">
        <ul>
          <li v-for="(itemm,index) in arr" :key="index">
          <span>名称:{{item.name}}</span>
          <span>数量:<button @click="reduce(index)" v-if="item.num>0">-</button>{{item.num}}<button>+</button></span>
          <span>单价:{{item.price}}</span>
          <span>总价:{{item.sum}}</span>
          <button @click="remove(index)">删除</button>
          </li> 
          <li>
            一共买了{{sum}}件商品
            //当总价达到500以上时颜色 发生改变
            总价:<span :cllass="[{active:total>500}]">{{total}}元
            </span>
          </li>
        </ul>
    </div>
    <script>
        var vm=new Vue({
            el:"#app",
            data:{
                arr:[{name:"鞋子",num:4,price:20,sum:80},{name:"衣服",num:1,price:50,sum:50},{name:"裤子",num:1,price:150,sum:150}]
            },
            methods:{
            reduce:function(){
            //点击按钮实现减并且让对应的 小计发生变化
                this.arr[index].num>0?this.arr[index].num--:this.arr[index].num==0;
                this.arr[index].sum=this.arr[index].num*this.arr[index].price    
                },
                //点击按钮实现加  并且对应的小计也要发生变化
                add:function(){
                    this.arr[index].num++;
                    this.arr[index].sum=this.arr[index].num*this.arr[index].price
                }
                //删除对应的商品
                remove:function(index){
                    this.arr.splice(1,index)
                }
            },
            
            
            //计算当前商品的总件数(因为需要知道的数据,,没有在data中,所以需要用到计算属性            
            computed:{
                sums:function(){
                    let sum=0;
                    this.arr.forEach(item=>{
                        sum+=item.ssum
                    })
                    return sum
                }.
                total:function(){
                    let sum=o;
                    this.arr.forEach(item=>{
                        sum+=item.sum
                    })
                    return sum
                }
            }
        })
    </script>
</body>
</html>