父亲往儿子传值
父亲往儿子传值,那首先肯定是要有数据的,
//父亲中的数据
lists:[
{id:1,name:"张三1"},
{id:2,name:"张三2"},
{id:3,name:"张三3"},
{id:4,name:"张三4"},
{id:5,name:"张三5"},
{id:6,name:"张三6"},
],
name:'少时诵诗书'
将儿子组件注册到父亲组件中
import Erzi from './erzi';
然后在components注册,接着就是在组件中调用,
<Erzi v-for="item in lists" :key="item.id" :msg='item' :info='name'/>
通过v-for渲染数据,然后动态绑定一个自定义的msg将item传递给子页
面,在子页面中做以下设置
//props用来接收父亲传过来的值,
export default {
//规定传过来的是什么类型
props:{msg:Object},
//不检测类型,全盘接收,
props:['msg','info'],
//用props接收到的值不能直接更改,更改控制台会报错,需要用下面的
方法重新给接收到的数据定义
data(){
return{
counter:this.msg
}
}
}
儿子往父亲传值
子组件:
准备一个触发事件的元素,并关联事件
<h1 @click='aaa()'>给父亲传值</h1>
然后在方法中写事件
aaa(){
//第一个参数是父组件中用来接收子组件传来的值得方法
this.$emit('info','给父组件的值')
}
父组件:
在子组件中调用
<child @info='change'></child>
然后在方法中调用change
//函数参数就是从子组件中获取到的值
change(res){
console.log(res)
}
父子组件之间直接获取值
父组件获取子组件:
this.$children,获取到是一个数组,可以根据自己的需求便利
子组件获取父组件:
this.$parent,获取到的是一个对象,可以根据自己的需要通过.语法
获取
注意
父子之间传值先要满足父子嵌套关系,就是加入A组件是父组件,
B组件是子组件,然后B组件要在A组件中注册并以标签的形式使用,
而通过路由切换的在可以把router-view当做子组件,
将需要绑定的动态元素绑定到上面,不过并不推荐