<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div id="app"> <!-- <child :msg="msg" @update:msg="getMsg"></child> --> <child :msg.sync="msg"></child> <!-- <child :msg="msg" @update:msg="msg=$event"></child> --> <!-- <button @click="$event"></button> --> <!-- <el-dialog :visible.sync="dialogVisible" ></el-dialog> --> <!-- <el-dialog :visible="dialogVisible" @update:visible="dialogVisible = $event"></el-dialog> --> </div> <script src="../vue.js"></script> <script> /* v-bind的修飾符 .sync 同步 父組件往子組件中傳遞數據,子組件的操做也能夠修改這個數據,同時子組件僅操做該數據時 組件上的自定義事件函數中的$event是觸發該自定義事件時的第二個參數(子組件傳遞過來的數據) <組件標籤 :子組件prop.sync="父組件data"></組件標籤> <組件標籤 :子組件prop="父組件data" @update:子組件prop="父組件data = $event"></組件標籤> 那麼子組件中必定有this.$emit('update:prop名字', '數據') 這個數據就是將來的$event */ const child = { template: ` <div> {{msg}} <button @click="changeMsg">按鈕</button> </div> `, props: { msg: String }, methods: { changeMsg () { this.$emit('update:msg', '子組件中修改後的msg') } } } const app = new Vue({ el: "#app", components: { child }, data: { msg: '父組件中的數據' }, methods: { getMsg (msg) { // console.log(e) this.msg = msg } } }) </script> </body> </html>