1.传值

a.父组件传子组件

方法一:

父页面:

<myReportContent v-if="contentState==1"  :paramsProps='paramsProps'   @back="back" :reportId="reportId" :reportTypex="reportTypex"></myReportContent>
  
import myReportContent from './myReportContent.vue'
 
components: {
  myReportContent
}

子页面:

    props: {
reportTypex: {
type: String
},
reportId: {
type: String
},
paramsProps:{
type:Object,
default:{}
}
},

 方法二:

父组件

  provide:{
nameGet: 'ab888'
},

子组件

  inject:['nameGet'],
data () {
return {
msg: 'componentA',
amount: 1,
name: this.nameGet
}
},

  b.子组件传父组件

方法一:(也是子组件调用父组件方法的案例)

父组件

<componentb @backParent='backParent'></componentb>

import componentb from 'components/componentB'

components: {
componentb
} backParent(amount){
console.log('获取子组件传过来的数量:' + amount)
}  

子组件

    changeDataMsg(){
this.$emit('backParent',this.amount)
// this.$router.push({path:'/'})
}

c.兄弟组件之间传值

方法一(a改变,b也跟着改变-----------------a传值给b):

创建一个独立的eventVue.js

import Vue from 'vue'
export default new Vue

父组件

    <componenta></componenta>
<componentb></componentb>   import componenta from 'components/componentA'
  import componentb from 'components/componentB' components: {
componenta,
componentb
},

兄弟组件a

<h1>{{ amount }}</h1>
import eventVue  from '@/until/eventVue.js'

  data () {
return {
msg: 'componentA',
amount: 1
}
} changeDataMsg(){
let amount = this.amount + 1
eventVue.$emit('myfun',amount)
this.amount = amount
}

兄弟组件b

<h1>{{ amount }}</h1>
import eventVue from '@/until/eventVue.js' changeDataMsg(){
eventVue.$on('myfun',(msg)=>{
this.amount = msg
})
}
  created(){
     this.changeDataMsg()
  }

 方法二(b改变,a也跟着改变-----------------b传值给a):

父组件

<componenta ref="childa"></componenta>
<componentb @backParent='backParent' ></componentb> backParent(number){
this.$refs.childa.changeDataNumber(number)
},

兄弟组件b

    <button @click="backp">backp</button>
<h1>{{ number }}</h1> data () {
return {
number: 2.1
}
}, backp(){
let number = this.number + 1
this.$emit('backParent',number)
this.number = number
},

兄弟组件a

    <h1>{{ number }}</h1>
data () {
return {
number: 9.1,
}
},
changeDataNumber(number){
this.number = number
}

d.父组件的父组件给孙组件传值(爷爷------>孙子) 

2.方法调用

a.父组件调用子组件方法

方法一:

    <h1>{{nameG}}<button @click="parentF">父组件按钮</button></h1>
<componenta ref="childa"></componenta> parentF(){
this.$refs.childa.changeDataMsg()
}  

子组件

    changeDataMsg(){
console.log('父组件调用子组件方法:ref')
}

方法二:

b.子组件调用父组件方法

方法一:见1中b的方法一

方法二:

父组件

parentFun(){
console.log('子组件调用父组件方法:$parent')
}

子组件

changeDataMsg(){
this.$parent.parentFun()
}

方法三:

父组件

    <componentb @backParent='backParent' :parentFuntion="parentFuntion"></componentb>
parentFuntion(){
console.log('子组件调用父组件方法:props')
}

子组件

    changeDataMsg(){
this.parentFuntion()
}

vue组件间的传值方式及方法调用汇总的更多相关文章

  1. vue组件间通信六种方式(完整版)

    本文总结了vue组件间通信的几种方式,如props. $emit/ $on.vuex. $parent / $children. $attrs/ $listeners和provide/inject,以 ...

  2. vue程序中组件间的传值方式

    vue程序在组件中进行传值有多种方式,这里记录我在项目中使用到的三种: 1. 父组件向子组件传值 2. 子组件向父组件传值 3. 通过路由传参 父组件通过props向子组件传值 在子组件script中 ...

  3. vue组件之间的传值方式

    一.父组件向子组件传值方式 1.1父组件向子组件传数据方式 <!DOCTYPE html> <html lang="en"> <head> &l ...

  4. Vue 组件间的传值(通讯)

    组件之间的通讯分为三种 父给子传 子给父传 兄弟组件之间的通讯 1 父组件给子组件传值 子组件嵌套在父组件内部,父组件给子组件传递一个标识,在子组件内部用props接收,子组件在模板里可以通过{{}} ...

  5. [Props] vue组件间的传值及校验

    基本用法 Prop的基本用法很简单,只需要在子组件的Vue实例中定义该属性并把值设为目标属性的数组即可 Vue.component('child', { ... // 接收message props: ...

  6. vue-learning:31 - component - 组件间通信的6种方法

    vue组件间通信的6种方法 父子组件通信 prop / $emit 嵌套组件 $attrs / $liteners 后代组件通信 provide / inject 组件实例引用 $root / $pa ...

  7. vue组件定义方式,vue父子组件间的传值

    vue组件定义方式,vue父子组件间的传值 <!DOCTYPE html> <html lang="zh-cn"> <head> <met ...

  8. Vue组件间通信6种方式

    摘要: 总有一款合适的通信方式. 作者:浪里行舟 Fundebug经授权转载,版权归原作者所有. 前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的 ...

  9. Vue中组件间通信的方式

    Vue中组件间通信的方式 Vue中组件间通信包括父子组件.兄弟组件.隔代组件之间通信. props $emit 这种组件通信的方式是我们运用的非常多的一种,props以单向数据流的形式可以很好的完成父 ...

随机推荐

  1. Excel导出问题

    问题一:本地导出正常,部署到linux服务器导出文件内容乱码? 解决:修改服务器tomcat配置 server.xml 添加URIEncoding="UTF-8" <Conn ...

  2. PAT 甲级 1036 Boys vs Girls (25 分)(简单题)

    1036 Boys vs Girls (25 分)   This time you are asked to tell the difference between the lowest grade ...

  3. XenServer 根分区空间满的解决办法

    1.清除已经应用的旧补丁文件 删除 /var/patch/ 下的除 applied 之外的所有文件 2.清除旧版的Xen-Tools文件 删除 /opt/xensource/packages/iso/ ...

  4. lvs整理

    LVS是Linux Virtual Server的简写,即Linux虚拟服务器,是一个虚拟的服务器集群系统.通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能.高可用的服务器群集,它具有良 ...

  5. 游戏协议模拟测试工具(TcpEngine)使用简介

    功能介绍 在有的网络开发需要走二进制流协议场景,比如网络游戏开发,在开发阶段,前端和后端协商好协议后就分别开发.在开发写代码的时候,有时需要对端发送一条完整的协议过来触发一下自己的代码,进行单步调试或 ...

  6. Golang 异常/日志处理

    1.xerrors 异常 xerrors 包是一个非常棒的设计,不同于往常语言如java/php,因为go的errors只是一个string类型的映射,所以内存占用空间很少.这在golang的核心库和 ...

  7. CF1210A Anadi and Domino

    思路: 很有意思的思维题. 实现: #include <bits/stdc++.h> using namespace std; int check(vector<int>&am ...

  8. Python turtle(介绍一)

    关于绘制图形库turtle # 画布上,默认有一个坐标原点为画布中心的坐标轴(0,0),默认"standard"模式坐标原点上有一只面朝x轴正方向小乌龟 一:海龟箭头Turtle相 ...

  9. Windows下命令行Git无法显示中文问题解决方案

    Windows下Git设置编码正常显示中文: 在 CMD 下设置环境变量 set LESSCHARSET=utf-8 在 PowerShell 下设置环境变量 $env:LESSCHARSET='ut ...

  10. scrapy 爬取纵横网实战

    前言 闲来无事就要练练代码,不知道最近爬取什么网站好,就拿纵横网爬取我最喜欢的雪中悍刀行练手吧 准备 python3 scrapy 项目创建: cmd命令行切换到工作目录创建scrapy项目  两条命 ...