<!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>子向父传参1——$emit用法</title>
<script type="text/javascript" src='js/vue.js'></script>
<script>
window.onload = function(){
new Vue({
el:'#my',
data:{
obj:{name:'老张',age:50}
},
components:{ // 局部组件
'my-parent':{ //组件的名称
template:'#my-parent',
data(){
return {
obj:{name:'小张',age:20},
childHobby:''
}
},
methods:{
get:function(childData){ //子发送消息的触发方法
this.childHobby = childData; //把子的值赋给另一个变量
}
},
props:['data'],
components:{
'my-child':{
template:'#my-child',
data(){
return {
hobby:'打篮球'
}
},
props:['data'],
methods:{
send:function(){
this.$emit('abc',this.hobby) //$emit('发射名称',参数)
}
}
}
}
}
}
})
}
</script>
<template id="my-parent">
<div>
<h1>我是父组件</h1>
<p>姓名:{{data.name}}</p>
<p>年龄:{{data.age}}</p>
<p>儿子的爱好:{{childHobby}}</p>
<my-child :data="obj" v-on:abc="get"></my-child>
</div>
</template>
<template id="my-child">
<div>
<h1>我是子组件</h1>
<p>姓名:{{data.name}}</p>
<p>年龄:{{data.age}}</p>
我的爱好:<input type="text" v-model="hobby" @input="send()"/>
<button @click="send()">子传父</button>
</div>
</template>
</head>
<body>
<div id="my">
<my-parent :data="obj"></my-parent>
</div>
</body>
</html>