1、路由配置:使用children属性实现路由嵌套,嵌套的组件关系就是父子组件关系

    {path: '/father',name: 'father',component: father,children: [{path: 'son',name: 'son',component: son}]}

2、组件传值-父组件向子组件传值

第一步:父组件 在引用子组件时,通过属性绑定(v-bind:)的形式,把需要传递给子组件的数据,传递到子组件内部,供子组件使用

父组件:father.vue

<template><div><h1>父组件</h1><router-view v-bind:fData="data1" :fMessage="data2"></router-view></div>
</template><script>
export default {data () {return {data1: '父组件数据data1',data2: '父组件数据data2',};}
}
</script>

第二步:把父组件传递过来的数据, 在 props数组 中定义一下

  1. 组件中的 所有props 中的数据,都是通过父组件传递给子组件的

  2. props 中的数据都是只读的,无法重新赋值

第三步:在该子组件中使用props数组 中定义好的数据

子组件:son.vue

<template><div><h1>子组件</h1><p>下面是父组件传过来的数据</p><p>第一个数据:{{fData}}</p><p>第二个数据:{{fMessage}}</p></div>
</template><script>
export default {props: ['fData', 'fMessage'],data () {return {};}
}
</script>

3、组件传值-父组件把方法传递给子组件

第一步:父组件向子组件传递方法,使用事件绑定机制 v-on,自定义一个事件属性,传递给子组件

父组件:father.vue

<template><div><h1>父组件</h1><router-view @show="showFather"></router-view></div>
</template><script>
export default {data () {return {};},methods: {showFather (a, b) {console.log('触发了父组件的方法' + '======' + a + '======' + b);}}
}
</script>

第二步:在子组件中定义一个方法,在方法中,利用  $emit  触发 父组件传递过来的,挂载在当前实例上的事件,还可以传递参数

第三步:在子组件中调用定义的那个方法,就可以触发父组件传递过来的方法了

子组件:son.vue

<template><div><h1>子组件</h1><Button type="primary" @click="sonClick">触发父组件方法</Button></div>
</template><script>
export default {data () {return {};},methods: {sonClick () {this.$emit('show', 111, 222);}}
}
</script>

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

在子组件中,利用  $emit  触发 父组件传递过来的方法的时候,可以将子组件的数据当做参数传递给父组件

父组件:father.vue

<template><div><h1>父组件</h1><router-view @show="showFather"></router-view></div>
</template><script>
export default {data () {return {fromSon1: '',fromSon2: ''};},methods: {showFather (a, b) {this.fromSon1 = a;this.fromSon2 = b;console.log('触发了父组件的方法' + '======' + a + '======' + b);}}
}
</script>

子组件:son.vue

<template><div><h1>子组件</h1><Button type="primary" @click="sonClick">触发父组件方法</Button></div>
</template><script>
export default {props: ['fData', 'fMessage'],data () {return {sonMessage: '子组件数据sonMessage',sonData: '子组件数据sonData'};},methods: {sonClick () {this.$emit('show', this.sonMessage, this.sonData);}}
}
</script>

5、父子组件之间相互传值

父组件:father.vue

<template><div><h1>父组件</h1><Button type="primary" @click="getData">获取数据</Button><router-view v-bind:fData="data1" :fMessage="data2" @show="showFather"></router-view></div>
</template><script>
export default {data () {return {data1: '父组件数据data1',data2: '父组件数据data2',fromSon1: '',fromSon2: ''};},methods: {showFather (a, b) {this.fromSon1 = a;this.fromSon2 = b;console.log('触发了父组件的方法' + '======' + a + '======' + b);},getData () {console.log(this.fromSon1);console.log(this.fromSon2);}}
}
</script>

子组件:son.vue

<template><div><h1>子组件</h1><p>下面是父组件传过来的数据</p><p>第一个数据:{{fData}}</p><p>第二个数据:{{fMessage}}</p><Button type="primary" @click="sonClick">触发父组件方法</Button></div>
</template><script>
export default {props: ['fData', 'fMessage'],data () {return {sonMessage: '子组件数据sonMessage',sonData: '子组件数据sonData'};},methods: {sonClick () {this.$emit('show', this.sonMessage, this.sonData);}}
}
</script>

Vue项目中实现父子组件之间传值相关推荐

  1. vue中,兄弟组件之间传值

    vue中,兄弟组件之间传值 项目中,需要使用多个子组件,当需要传递值的时候,较为麻烦,怎样实现呢 1.一般可以使用子组件a传递给父组件,再由父组件传递给子组件b.但是一般较为麻烦, 2.使用bus作为 ...

  2. vue父子组件之间传值的方法

    vue父子组件之间传值的方法 一.基本父子传值 父传子 方式: props 效果: 把父组件的fatherName属性传入子组件,在子组件中使用 父组件代码: <template>< ...

  3. 【微信小程序】父子组件之间传值

    微信小程序父子组件之间传值有两种: 1.父组件向子组件传值 2.子组件向父组件传值 区别: 父向子传值使用的是属性绑定,子组件中的properties对象进行接收父组件传递过来的值. 子向父传值使用的 ...

  4. Vue项目中公用footer组件底部位置的适配问题

    vue项目中公用footer组件底部位置的适配问题 需求: footer为公用组件,其他页面都需要引入,这是会存在一种情况:有的页面高度很高,footer组件要放在内容的最后:有的页面内容很少,高度很 ...

  5. Vue中关于父子组件之间的通信

    父子组件之间的通信是vue中的基础知识,在此做一个简单的梳理. 总的来说父传子是通过props,子传父是通过$emit. 简单的一个demo来说说,先上代码 父组件: 如图,HelloWorld是一个 ...

  6. vue 项目中使用 Loading 组件

    当在vue项目中请求后台接口时,常常会使用 loding 过渡数据的加载时间. 如果 loading 作为一个全局的加载状态,应该写在项目中的App.vue中 <template>< ...

  7. Vue中父子组件之间传值 ,兄弟组件之间传值(两种方法)

    一.父向子传值props 父组件向子组件传值: parent:<parent><child :message="msg"></child> // ...

  8. Vue非父子组件之间传值

    <!DOCTYPE html> <html><head><meta charset="utf-8"><title>非父子 ...

  9. Vue父子组件之间传值

    组件分两种,全局组件和局部组件 全局组件这么写 Vue.component("nav-bar",{props:['navShow',"elecText",&qu ...

最新文章

  1. C#开发中碰到的问题------Uncaught TypeError: Cannot read property 'style' of undefined
  2. linux ubuntu文件系统,Ubuntu Linux文件系统的目录及用途简析
  3. 问题 1437: [蓝桥杯][历届试题]城市建设(最小生成树)
  4. 阅读react-redux源码(三) - mapStateToPropsFactories、mapDispatchToPropsFactories和mergePropsFactories
  5. PocketLibs(3)—— 进度条 NProgress
  6. java之Junit
  7. AUTOSAR基础篇之CanTsyn
  8. Yate学习--基于Windows安装和运行Yate
  9. 电脑出现“由于该设备有问题,Windows 已将其停止(代码 43)”的提示,该怎么解决?
  10. 2016.8.26 动态规划及杂题选讲 [树形dp] [数论] [矩阵快速幂]
  11. Unity - Timeline 之 Timeline window(Timeline窗口)
  12. JavaScript 删除Dom节点
  13. 微服务 支付 核对 对账系统
  14. 泛泰长短信修改教程(供其他泛泰机型参考)
  15. python数组中最大元素_Python获取numpy数组中最大的5个元素(保持原顺序)
  16. MMM配置文件及相关命令
  17. 无线网络技术教程(第3版)--原理、应用与实验 金光江光亮 编著 复习资料 聊城大学考试题目
  18. js经验分享 JavaScript反调试技巧
  19. 【厉害了】台达PLC可以实现无线下载程序!
  20. 手提电脑安装双屏后没有声音输出

热门文章

  1. ESP 保姆级教程 基础篇 —— 环境安装、NodeMcu引脚介绍
  2. 七夕送什么礼物?最好用蓝牙耳机排行
  3. centos 7 配置ntp时间服务器
  4. 360 度评估最佳示范问题
  5. 毕业设计 2023-2024年最新信息管理专业毕设选题题目推荐汇总
  6. 记一次vCenter7.0安装补丁
  7. 上云说丨上云迁移——快,准,稳!
  8. 西南交大计算机考研三本,西南交大考研经验:从三本到211.doc
  9. python airflow_Airflow 安装
  10. [教程]HTML5+Bootstrap4+Spring Boot+Mysql 图书管理系统 (附源码)