美文网首页
2018-09-21

2018-09-21

作者: 月薪2k的前端程序员 | 来源:发表于2018-09-21 08:26 被阅读0次
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    table{
        width: 70%;
        margin: 0 auto;
        border-collapse: collapse;
        text-align: center;
    }
    th{
        padding: 10px 0;
    }
    td{
        padding: 15px 0;
    }
    </style>
</head>
<body>
   <div id="app">
       <my-father></my-father>
   </div>
    <script src="js/vue.js"></script>
    <script>
    Vue.component("my-father",{
        template:`
            <div>
                <table border="1">
                    <tr>
                        <th v-for="value in list">{{value}}</th>
                    </tr>
                    <tr v-for="(val,index) in content">
                        <td>{{index+1}}</td>
                        <td>{{val.name}}</td>
                        <td>{{val.price}}</td>
                        <td><button @click="alt(index)">+</button>{{val.cont}}<button @click="res(index)">-</button></td>
                        <td>{{val.all}}</td>
                    </tr>
                    <my-child v-bind:mes="msg"></my-child>
                </table>
            </div>
        `,
        data:function(){
            return{
                list:["编号","名称","单价","数量","小计"],
                content:[
                    {name:"香蕉",price:1,cont:1,all:1},
                    {name:"苹果",price:2,cont:1,all:2},
                    {name:"鸭梨",price:3,cont:1,all:3}
                ],
                msg:'6'
            }
        },
        methods:{
            alt:function(i){
                this.content[i].cont++;
                this.content[i].all=this.content[i].cont*this.content[i].price;
                this.total();
            },
            res:function(i){
                if(this.content[i].cont>0){
                    this.content[i].cont--;
                    this.content[i].all=this.content[i].cont*this.content[i].price;
                }
                this.total();
            },
            total:function(){
                for(var i=0,total=0;i<this.content.length;i++){
                    total+=this.content[i].all;
                }
                this.msg=total;
            }
        }
    })
    Vue.component("my-child",{
        props:["mes"],
        template:`
            <tr>
                <td colspan="5">总价:{{mes}}元</td>
            </tr>
        `
    })
    new Vue({
        el:"#app"
    })
    </script>
</body>
</html>

相关文章

网友评论

      本文标题:2018-09-21

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