组件传值-子组件通过事件调用向父组件传值


<!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>
原文地址:https://www.cnblogs.com/lujieting/p/10459204.html