vue 父子组件相互传值
子传父
逻辑: 单击子组件的按钮 ,触发它的单击事件 通过 $emit 触发父级自定义事件 并传一个值给父级
1 <div id="id"> 2 3 <h3>儿子 你今年多大了 -- {{age}}</h3> 4 <!-- @getage 自定义事件 --> 5 <con1 @getage='getage'></con1> 6 </div> 7 <!-- 写一个子组件模板 --> 8 <template id="son1"> 9 <!-- 必须用一个大盒子包裹 --> 10 <div> 11 <h3>我今年<input type="button" value="已经" @click='click'></h3> 12 </div> 13 14 </template> 15 16 <script> 17 //创建一个Vue实例 18 var ss = new Vue({ 19 el:'#id', 20 data:{ 21 // 定义变量 age 22 age:' ' 23 }, 24 methods:{ 25 //getage(age) age为子级传来的值 获取到之后 更改父级age的值 26 27 getage(age){ 28 this.age = age 29 } 30 }, 31 32 components:{ 33 //定义一个私有的子级模板 34 con1:{ 35 template:"#son1", 36 data(){ 37 return { 38 age:22 39 } 40 }, 41 methods:{ 42 // click 单击事件 $emit 触发父级事件 并传值 43 click(){ 44 this.$emit('getage',this.age) 45 } 46 } 47 } 48 } 49 50 }) 51 52 </script>
父传子
逻辑: 父级向子级传值 只用 props:[ ] 将父级元素传递给子级
// 注意: 组件中的 所有 props 中的数据,都是通过 父组件传递给子组件的
// props 中的数据,都是只读的,无法重新赋值
// 能够获得当前组件标签身上对应属性的属性值
<div id="id"> <h2>你爸我有{{money}}</h2> <con1 :money='money'></con1> </div> <script> var ss = new Vue({ el:'#id', data:{ money:1000000 }, methods:{ }, //定义一个私有子组件 components:{ con1:{ template:'<h3>爸,我知道你有{{money}}</h3>', //props 父组件向子组件传值 props:['money'] } } }) </script>

浙公网安备 33010602011771号