<!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>
<script src="./js/vue-2.4.0.js"></script>
</head>
<body>
<div id="app">
<!-- 父組件向子組件傳遞方法,使用的是 事件綁定機制:v-on ,當咱們自定義了一個事件屬性以後,那麼子組件就可以,經過某些方式,來調用傳遞進去的這個方法了 -->
<com2 @func="show"></com2>
</div>
<template id="tmpl">
<div>
<h1>這是子組件</h1>
<input type="button" value="這是子組件中的按鈕,點擊它,觸發父組件傳遞過來的 func 方法" @click="myclick">
</div>
</template>
<script>
//定義了一個字面量類型的 組件模板對象
var com2={
template:'#tmpl',//經過指定了一個ID 表示說,要去加載 這個指定ID 的template 元素中的內容,當作 組件的HTML 結構
data(){
return{
sonmsg:{name:'小頭兒子',age:6}
}
},
methods:{
myclick(){
//當點擊子組件的按鈕的時候,如何拿到父組件傳遞過來的 func 方法,並調用這個方法?
//emit 英文原意:觸發,調用,發射的意思
//this.$emit('func123',123,456)
this.$emit('func',this.sonmsg)
}
}
}
//建立 Vue 實例,獲得 ViewModel
var vm=new Vue({
el:'#app',
data:{
datamsgFormSon:null
},
methods:{
show(data){
//console.log('調用了父組件身上的 show 方法:---'+data)
//console.log(data):
this.datamsgFormSon=data
}
},
components:{
com2
}
})
</script>
</body>
</html>