VUE的父子组件内容获取和事件绑定代码
父网页代码
<template> <div class="hello"> <h1 :class="ff" @mouseover="add()">这是首页</h1> <div> <aaa :ttt="test" @aa="funck()"></aaa> </div> </div> </template> <script> import COPY from './COPY.vue' export default { name: 'HelloWorld', data () { return { test:'这是父组件的变量', ff: '' } }, methods:{ funck: function(value) { this.ff='f' }, add: function() { this.test='f' } }, components: { aaa:COPY } } </script> <style scoped> .f{ background-color: aqua } </style>
子网页代码
<template> <div class="hello"> <h1 :class="ttt">这是一个可以COPY的固定页面 </h1> <p @click="fuck()"> {{ttt}}</p> <div @click="kkk()" :class="ttt">什么鬼巴西龟</div> </div> </template> <script> export default { name: 'COPY', data () { return { ooo:'这是子组件的变量' } }, props:{ ttt:{ default:0, type:Number } }, methods:{ fuck: function() { this.$emit('aa') }, kkk: function() { this.$emit('mouseover') } } } </script> <style scoped> .f{ background-color:cadetblue } </style>
详细说明
要将父组件中的变量传递给子组件:在子组件中完成props方法中的变量命名后
例:父组件中--><div> <aaa :ttt="test">这里的ttt就是子组件的变量命名,获取父组件的test变量</aaa> </div>
子组件中-->props:{ 固定写法
ttt:{ 也可以是空对象,以下的变量值都不写
default:0 设置默认值default为0
type:Number 这里一旦定义值的类型,如果不是Number等就会报错
}
}
<p> {{ttt}}</p> 这里输出ttt的值,也就是父组件中的test值
要将子组件的变量传递给父组件:在子组件中准备好触发事件和方法
例:子组件中--><p @click="fuck()">当点击这里后触发方法fuck()</p> methods:{ fuck: function() { this.$emit('bb',this.ccc,this.aaa) 命名一个事件名bb,同时带上当前网页的变量ccc和aaa } 父组件中--><p @bb="test()"></p> 跟子组件事件命名相同,子组件触发事件后运行这里的test()方法 methods:{ test: function(value1,value2) { 命名value变量1和2,如果子组件参数多个则命名多个,顺序要对应 console.log(value1) 输出value变量,即子组件的变量ccc this.ff=value2 改变当前页面的变量ff的值等于带过来的参数aaa }
要点击子组件的内容触发父组件的事件:在methods中命名一个变量和方法后,固定写法this.$emit
例:子组件中--><p @click="add()">当点击这里后触发方法add()</p> methods:{ add: function() { this.$emit('aa') 命名一个事件名aa,方法运行后到父组件找到相同的事件名 } 父组件中--><p @aa="funck()"></p> 跟子组件事件命名相同,子组件触发事件后运行这里的funck()方法 methods:{ funck: function() { this.ff='改变的值' 改变当前页面的变量ff的值 }