Part.1  传值几种方式

在写项目时,遇到组件传值问题,特此记录一波~~~

(1)  父传子

(2)  子传父

(2)  兄弟组件传值

Part.2  父传子

顾名思义,就是父组件传值给子组件

子组件:

<template>
<div class="hello">
<h1>{{ msg }}</h1>
</div>
</template> <script>
export default {
name: "HelloWorld",
props: {
msg: String
}
};
</script>

父组件:

<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png" />
<HelloWorld msg="Welcome to Your Vue.js App" />
</div>
</template> <script>
import HelloWorld from "@/components/HelloWorld.vue"; export default {
name: "home",
components: {
HelloWorld
}
};
</script>

效果:

Part.3 子传父

子组件传值给父组件

子组件:

<template>
<div class="hello">
<h1 @click="goFather">{{ msg }}</h1>
</div>
</template> <script>
export default {
name: "HelloWorld",
data() {
return{
msg: '我是子组件的值'
}
},
methods: {
goFather() {
this.$emit('goFather', this.msg)
}
}
};
</script>

父组件:

<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png" />
<HelloWorld @goFather="getValue"/>
<h1>{{msg}}</h1>
</div>
</template> <script>
import HelloWorld from "@/components/HelloWorld.vue"; export default {
name: "home",
data() {
return {
msg: '我现在没值'
}
},
methods: {
getValue(data) {
this.msg = data
}
},
components: {
HelloWorld
}
};
</script>

效果:

点击之前

点击之后

Part.3  兄弟组件传值

我把兄弟组件传值分为两种情况:

1. 通过点击事件触发

2. 窗体加载时就触发

首先创建一个供传值使用的媒介 JS 文件, 例如 a.js

内容如下:

import Vue from 'vue'

export default new Vue

其次,父组件如下

<template>
<div id="app">
<div id="nav"> <!-- 兄弟组件 Home & About -->
<Home></Home>
<About></About> </div>
</div>
</template> <script>
import Home from './views/Home'
import About from './views/About'
export default {
name: "home",
components: {
Home,
About
}
};
</script>

我们开始第一种情况:点击触发

Home 子组件:

<template>
<div class="home">
<h1 @click="goAbout">{{msg}}</h1>
</div>
</template> <script>
import a from '../assets/a'
export default {
name: "home",
data() {
return {
msg: '我是兄弟组件一'
}
},
methods: {
goAbout: function() {
a.$emit('userDefinedEvent',this.msg)
}
}
};
</script>

About 子组件:

<template>
<div class="about">
<h1>{{msg}}</h1>
<h2>{{msg2}}</h2>
</div>
</template> <script>
import a from '../assets/a'
export default {
name: "About",
data() {
return {
msg: '我是兄弟组件二',
msg2: '默认值'
}
},
created() {
a.$on('userDefinedEvent',(e)=>{
this.msg2 = e
})
}
};
</script>

效果:

点击之前:

点击之后

OK!再看第二种情况

Home 组件:

<template>
<div class="home">
<h1>{{msg}}</h1>
</div>
</template> <script>
import a from '../assets/a'
export default {
name: "home",
data() {
return {
msg: '我是兄弟组件一'
}
},
created() {
a.$emit('userDefinedEvent',this.msg)
}
};
</script>

About  组件:

<template>
<div class="about">
<h1>{{msg}}</h1>
<h2>{{msg2}}</h2>
</div>
</template> <script>
import a from '../assets/a'
export default {
name: "About",
data() {
return {
msg: '我是兄弟组件二',
msg2: '默认值'
}
},
created() {
a.$on('userDefinedEvent',(e)=>{
this.msg2 = e
})
}
};
</script>

搞定,运行!

效果:

蛋疼的结果出现了,一直没值,根本没监听到!

vue 组件相互传值的更多相关文章

  1. Vue父子组件相互传值及调用方法的方案

    Vue父子组件相互传值及调用方法的方案 一.调用方法: 1.父组件调用子组件方法: 2.子组件调用父组件方法: 参考:https://www.cnblogs.com/jin-zhe/p/9523782 ...

  2. vue组件之间传值方式解析

    vue组件之间传值方式解析一.父组件传到子组件 1.父组件parent代码如下: <template> <div class="parent"> <h ...

  3. Vue 组件间传值

    前言 Vue 作为现在比较火的框架之一,相信您在使用的过程中,也会遇到组件间传值的情况,本文将讲解几种 Vue 组件间传值的几种方法,跟着小编一起来学习一下吧! 实现 注意: 学习本文,需要您对 Vu ...

  4. Vue组件间传值 v-model

    使用过Vue的同学应该都了解组件之间传值 父组件 --> 子组件 : props 子组件 --> 父组件 : 事件 其实有一种更为简单的方法,是基于上述两种方法,那就是 v-model 我 ...

  5. vue 组件与传值

    一.表单输入绑定(v-model 指令) 可以用 v-model 指令在表单 <input>.<textarea> 及 <select> 元素上创建双向数据绑定. ...

  6. vue 组件间传值方式

    /* 父组件给子组件传值 1.父组件调用子组件的时候 绑定动态属性 <v-header :title="title"></v-header> 2.在子组件里 ...

  7. 第七十四篇:Vue组件父子传值

    好家伙, 1.组件之间的关系 在项目开发中,组件之间的最常见关系分为如下两种: (1)父子关系 (2)兄弟关系 2.父子之间的数据共享 (1)父->子共享数据 父组件向子组件共享数据需要使用自定 ...

  8. vue组件通信传值——Vuex

    一.Vuex介绍 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. Vuex 也集成到 Vu ...

  9. vue 父子组件相互传值

    子传父 逻辑: 单击子组件的按钮 ,触发它的单击事件   通过 $emit 触发父级自定义事件 并传一个值给父级 <div id="id"> <h3>儿子 ...

随机推荐

  1. FINDSTR 命令使用详解

    Findstr 使用正则表达式搜索文件中的文本模式. 语法 findstr [/b] [/e] [/l] [/r] [/s] [/i] [/x] [/v] [/n] [/m] [/o] [/p] [/ ...

  2. 【旧文章搬运】分析了一下360安全卫士的HOOK

    原文发表于百度空间及看雪论坛,2009-10-08 看雪论坛地址:https://bbs.pediy.com/thread-99128.htm 看时间,09年的国庆节基本上就搞这玩意儿了...==== ...

  3. 【旧文章搬运】Windbg+Vmware驱动调试入门(一)---Windbg的设置

    原文发表于百度空间,2009-01-08========================================================================== Windb ...

  4. JS获取子节点、父节点和兄弟节点的方法实例总结

    转自:https://www.jb51.net/article/143286.htm 本文实例讲述了JS获取子节点.父节点和兄弟节点的方法.分享给大家供大家参考,具体如下: 一.js获取子节点的方式 ...

  5. CodeForces 719B Anatoly and Cockroaches (水题贪心)

    题意:给定一个序列,让你用最少的操作把它变成交替的,操作有两种,任意交换两种,再就是把一种变成另一种. 析:贪心,策略是分别从br开始和rb开始然后取最优,先交换,交换是最优的,不行再变色. 代码如下 ...

  6. hdoj5301

    题意: 有一个n*m的大矩阵, 其中有一个1*1的不要的位置(x,y), 然后用若干个小矩阵去覆盖大矩阵, 不要的不能被覆盖. 问小矩阵中面积最大的面积最小是多少. 思路: 巨巨先画一个矩形,看看那个 ...

  7. 百度编辑器ueditor插件的基本使用

    注意:该插件是基于tpframe开发,请在tpframe框架上使用 插件下载地址:https://pan.baidu.com/s/1MOJbd1goQC0Bn5-7HcIdKA 插件下载下来后解压到a ...

  8. ExtWebComponents

    我们很高兴地宣布Sencha ExtWebComponents的早期版本现已推出.ExtWebComponents提供了数百个预构建的UI组件,您可以轻松地将它们集成到使用任何框架构建的Web应用程序 ...

  9. hdu 5409 CRB and Graph(边双联通分量)

    题意: 给一个图一些边,保证图连通 问对于每条边,如果去除该边后使得图中一些点不连通.设这些点(u,v),要求使u尽量小,v尽量大,输出这样的(u,v).否则输出0 0. #include <b ...

  10. div倾斜 文字不倾斜