zoukankan      html  css  js  c++  java
  • 购物车实现一

    使用子组件触发事件时通过this.$emit来发送给父组件从而调用父组件的方法来修改总价

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
        <title>Title</title>
        <!-- Bootstrap -->
        <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
        <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
        <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
        <script type="text/javascript" src="./node_modules/vue/dist/vue.js"></script>
        <script type="text/javascript" src="./node_modules/vue-router/dist/vue-router.js"></script>
        <script type="text/javascript" src="./node_modules/axios/dist/axios.js"></script>
    
    </head>
    <body>
    <div id="box">
        <div class="text-info"><h4>购物车</h4></div>
        <rk-cart :goods="goods"  @sum="total"></rk-cart>
    
        <div>
            合计:{{totalPrice}}元
        </div>
    
    </div>
    
    <script type="text/x-template" id="cart">
        <table border="1" width="90%">
            <tr>
                <th>序号</th>
                <th>名称</th>
                <th>价格</th>
                <th>数量</th>
                <th>操作</th>
            </tr>
    
            <tr v-for="(item,key) in goods">
                <td>{{item.id}}</td>
                <td>{{item.goodsName}}</td>
                <td>{{item.price}}</td>
                <td>
                    <input type="text" v-model="item.num" @blur="sum">
                </td>
                <td>删除</td>
            </tr>
        </table>
    </script>
    
    <script type="text/javascript">
    
        let rkCart = {
            methods:{
                sum(){
                    console.log('sum');
                    this.$emit('sum');
                }
            },
            props:['goods'],
            template:'#cart'
        };
    
        let app = new Vue({
            el:'#box',
            mounted(){
                this.total();
            },
            data:{
                goods:[
                    {id:1,goodsName:'iphone 8 Plus',price:6900,num:1},
                    {id:2,goodsName:'爱奇艺vip',price:100,num:1},
                ],
                totalPrice:0,
            },
            components:{rkCart},
            methods:{
                total(){
                    this.totalPrice = 0;
                    this.goods.forEach(v=>{
                        this.totalPrice += v.price * v.num;
                    });
                }
            }
        });
    </script>
    </body>
    </html>
    

      

  • 相关阅读:
    某电校园网
    M100(3) 无线数传
    【转】大厦将倾,互联网将如何变革传统行业(下)
    【转】大厦将倾,互联网将如何变革传统行业(上)
    【转】用户十秒离开你网站的25个原因
    web及移动应用测试知识总结
    【转】Watir, Selenium & WebDriver
    ICMP协议
    我不会OOO,仍然可以XXX_转
    查看网络连接数目(解决TIME_WAIT过多造成的问题_转)
  • 原文地址:https://www.cnblogs.com/wntd/p/9051277.html
Copyright © 2011-2022 走看看