1. 程式人生 > >vue的子元件操作父元件以及父元件操作子元件

vue的子元件操作父元件以及父元件操作子元件

1.子元件操作父元件

要為子元件建立一個ref屬性並且為它賦值,<chlid ref="title"></chlid> 然後在父元件中通過this.$refs.ref的屬性 來值呼叫它

比如:父元件

<template id="parent">
            <div>
                <h1>父元件</h1>
                <button @click="tap">點選</button>
                <hr />
                <chlid ref="title"></chlid>
            </div>

        </template>

          js程式碼: methods: {
                            tap() {
                                console.log(this.$refs.title.a)
                            }

                        },

子元件:    

<template id="chlid">
            <div>
                <h2>子元件</h2>
            </div>

        </template>

     js程式碼: components: {
                            "chlid": {
                                template: "#chlid",
                                data() {
                                    return {
                                        a: "子元件資料"
                                    }
                                },
                                
                            }
                        }

點選按鈕控制檯輸出:子元件資料

2.子元件操作父元件

子元件:

<template id="chlid">
            <div>
                <h2>子元件</h2>
                <button @click="tap">點選</button>
            </div>

        </template>

js程式碼:components: {
                            "chlid": {
                                template: "#chlid",
                                data() {
                                    return {
                                        a: "子元件資料"
                                    }
                                },
                                methods: {
                                    tap() {
                                        console.log(this.$parent.a)
                                    }

                                }
                            }
                        }

父元件:<template id="parent">
            <div>
                <h1>父元件</h1>
                <button @click="tap">點選</button>
                <hr />
                <chlid ref="title"></chlid>
            </div>

        </template>

js程式碼:   data() {
                            return {
                                a: "父元件資料"
                            }
                        },

點選按鈕控制檯輸出:父元件資料

3.程式碼:要引入vue.js

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>

    <body>
        <div id="app">
            <parent/>
        </div>
        <template id="parent">
            <div>
                <h1>父元件</h1>
                <button @click="tap">點選</button>
                <hr />
                <chlid ref="title"></chlid>
            </div>

        </template>
        <template id="chlid">
            <div>
                <h2>子元件</h2>
                <button @click="tap">點選</button>
            </div>

        </template>
        <script src="../vue.js"></script>
        <script type="text/javascript">
            new Vue({
                el: "#app",
                data: {

                },
                components: {
                    "parent": {
                        template: "#parent",
                        data() {
                            return {
                                a: "父元件資料"
                            }
                        },
                        methods: {
                            tap() {
                                console.log(this.$refs.title.a)
                            }

                        },
                        components: {
                            "chlid": {
                                template: "#chlid",
                                data() {
                                    return {
                                        a: "子元件資料"
                                    }
                                },
                                methods: {
                                    tap() {
                                        console.log(this.$parent.a)
                                    }

                                }
                            }
                        }
                    }
                }
            })
        </script>
    </body>

</html>