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. python之路,day6-面向对象

    一.面向过程编程 简单的说就是:如果你只是写一些简单的脚本,去做一些一次性任务,用面向过程的方式是极好的,但是如果你要处理的任务比较复杂,且需要不断迭代和维护的,那还是用面向对象最方便了. 二.面向对 ...

  2. 阿里云RDS数据库备份文件恢复到本地mysql数据库

    一.安装mysql和xtrabackup  (1)安装mysql 因为RDS是5.6版本,所以我们本地的mysql数据库要与RDS版本对应. rpm -ivh http://repo.mysql.co ...

  3. Get back Typing Break in Ubuntu 12.04 & 11.10(转载)

    转自:http://ubuntuguide.net/get-back-typing-break-in-ubuntu-12-04-11-10 Since Ubuntu 11.10 Oneiric, th ...

  4. composer下载tp5第三方扩展

    (谨记:如果使用 composer 命令安装失败,请查看根目录下的 composer.json 文件是否正确,并查看下的扩展是否有多个版本,下载的版本是否符合当前框架的版本) 1.基础 compose ...

  5. python __builtins__ memoryview类 (46)

    46.'memoryview',  返回给定参数的内存查看对象(Momory view).所谓内存查看对象,是指对支持缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问. cla ...

  6. 蒟蒻ACMer回忆录 · 一段弱校ACM的奋斗史

    三年半的ACM生涯终于迎来了终点,退役之时,感慨万分,故写此文以纪念逝去的时光,那些为ACM拼搏的日子,那段弱校ACM的奋斗史. 三年半的ACM生涯,窝见证了CUMT从打铁到铜牌的突破,又见证了从铜牌 ...

  7. Log2Net组件代码详解(附开源代码)

    上一篇,我们介绍了Log2Net的需求和整体框架,我们接下来介绍我们是如何用代码实现Log2Net组件的功能的. 一.整体介绍 Log2Net组件本身是一个Dll,供其他系统调用. 本部分由以下几部分 ...

  8. Mybatis 未设置主键映射报错;Cause: java.sql.SQLSyntaxErrorException: Unknown column 'system_id' in 'field list'

    使用MyBatis的时候,主键的字段建议绑定在Bean的属性上面, import javax.persistence.*; public class User { @Id @Column(name = ...

  9. AFN清除图片缓存 以及菊花转圈

    AFNetworking网络库已经提供了很好的图片缓存机制,效率是比较高的,但是我发现没有直接提供清除缓存的功能,可项目通常都需要添加 清除功能的功能,因此,在这里我以UIImageView+AFNe ...

  10. PJzhang:贷款逾期与失信被执行人

    猫宁!!! 最近看到一家网贷机构在APP上的温馨提示,提到了网贷逾期与个人征信的关系以及向客户发放贷款的7项基本原则. 如下: 贷款申请及逾期告知 尊敬的客户,感谢您选择####股份有限公司为您提供贷 ...