美文网首页
Vue.js 组件传值购物车

Vue.js 组件传值购物车

作者: 纪美 | 来源:发表于2018-09-20 15:12 被阅读0次
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content='width=device-width initial-scale=1.0, user-      scalable=no'>
    <link rel="stylesheet" href="./bootstrap/css/bootstrap.css">
    <title>shopping</title>
    </head>
    <body>
     <div class="container">
       <new></new>
     </div>
    <script src="vue.js"></script>
    <script>
    //        父组件
         Vue.component("new",{
            template:`
                <table class="table table-bordered">
                    <thead>
                        <tr>
                            <th class="text-center">编号</th>
                            <th class="text-center">名称</th>
                            <th class="text-center">单价</th>
                            <th class="text-center">数量</th>
                            <th class="text-center">总价</th>
                        </tr>
                    </thead>
                    <child1 v-bind:list="arr"></child1>
                </table>
            `,
            data:function(){
                return{
                     arr:[
                       {one:"苹果",two:3,three:1,four:3},
                       {one:"菠萝",two:2,three:1,four:2},
                       {one:"芒果",two:5,three:1,four:5}
                   ]
                }     
             }
         
         })
    //         子组件
         Vue.component('child1',{
            props:['list'],
            template:`
             <tbody class="text-center"> 
                        <tr v-for="(value,index) in list">
                            <td>{{index+1}}</td>    
                            <td>{{value.one}}</td>    
                            <td>{{value.two}}</td>    
                            <td>
                                <button @click="btn1(index)">+</button>
                                <span>{{value.three}}</span>
                                <button @click="add(index)">-</button>
                            </td> 
                            <td>{{value.four}}</td>    
                        </tr>
                        <tr>
                            <td colspan="5" class="text-center">总计:{{arrs}}.00</td>
                        </tr>
                    </tbody>
             
             ` ,
             data:function(){
                 return{
                     arrs:10
                 }
             },
             methods:{
                btn1:function(ind){
    //                    数量
                    this.list[ind].three++;
    //                    小计:
                    this.list[ind].four=this.list[ind].two*this.list[ind].three;
    //                    总价
                    this.zongjia();
                },
                add:function(ind){
    //                    数量
                    if(this.list[ind].three>1){
                        this.list[ind].three--;
                    }
    //                    小计:
                    this.list[ind].four=this.list[ind].two*this.list[ind].three;
    //                    总价:
                    this.zongjia();
                },
                zongjia:function(){
                    for(var i=0,lis=0;i<this.list.length;i++){
                        lis+=this.list[i].four;
                    }
                    this.arrs=lis;
                }
             }
                })
        new Vue({
            el:'.container'
        })
      </script>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:Vue.js 组件传值购物车

          本文链接:https://www.haomeiwen.com/subject/lbhnnftx.html