VUE 兄弟之間的傳值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>組件通信</title>
    <style>
        table {
            width: 500px;
            border: 1px solid;
            margin: 10px auto;
        }

        td {
            padding: 10px 0;
            text-align: center;
        }
    </style>
</head>
<body>
<div id="tab">
    <table>
        <tbody>
        <tr style="background-color: #008000;color: white;">
            <td colspan="3">父組件</td>
        </tr>
        <tr>
            <td>name</td>
            <td>{{name}}</td>
            <td><input type="text" v-model="name"/></td>
        </tr>
        <tr>
            <td>age</td>
            <td>{{age}}</td>
            <td><input type="text" v-model="age"/></td>
        </tr>
        </tbody>
    </table>
    <v-son :sname="name" @fchan="change" :sage="age"></v-son>
</div>


<template id="moban">
    <div>
        <button>兒子</button>
        <table>
            <tbody>
            <tr style="background-color: #008000;color: white;">
                <td colspan="3">子組件</td>
            </tr>
            <tr>
                <td>name</td>
                <td>{{sname}}</td>
                <td><input type="text" v-model="sonname"/></td>
            </tr>
            <tr>
                <td>age</td>
                <td>{{sage}}</td>
                <td><input type="text" v-model="sonage"/></td>
            </tr>
            </tbody>
        </table>

    </div>
</template>

<template id="moban2">
    <div>
        <table>
            <tbody>
            <tr style="background-color: #008000;color: white;">
                <td colspan="3">{{names}}</td>
            </tr>
            <tr>
                <td>name</td>
                <td>{{names}}</td>
                <td><input type="text"/></td>
            </tr>
            <tr>
                <td>age</td>
                <td>{{ages}}</td>
                <td><input type="text"/></td>
            </tr>
            </tbody>
        </table>
    </div>
</template>
</body>
<script src="https://cdn.bootcss.com/vue/2.4.4/vue.js"></script>
<script>
    new Vue({
        el: "#tab",
        data: {
            name: "父組件",
            age: "18"
        },
        methods: {
            change(val){
                this.name=val
            }
        },
        components: {
            "vSon": {
                props: ['sname', "sage"],
                data(){
                    return {
                        sonname: this.sname,
                        sonage: this.sage
                    }
                },
                template: "#moban",
                watch: {
                    sname(){
//                        console.log("父元素改變了");
                         this.sonname=this.sname;
                    },
                    sonname(){
//                       this.sname=this.sonname
                        this.$emit("fchan",this.sonname)
                    }
                }
            }
        }
    });
</script>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章