vue 组件相互传值
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 组件相互传值的更多相关文章
- Vue父子组件相互传值及调用方法的方案
Vue父子组件相互传值及调用方法的方案 一.调用方法: 1.父组件调用子组件方法: 2.子组件调用父组件方法: 参考:https://www.cnblogs.com/jin-zhe/p/9523782 ...
- vue组件之间传值方式解析
vue组件之间传值方式解析一.父组件传到子组件 1.父组件parent代码如下: <template> <div class="parent"> <h ...
- Vue 组件间传值
前言 Vue 作为现在比较火的框架之一,相信您在使用的过程中,也会遇到组件间传值的情况,本文将讲解几种 Vue 组件间传值的几种方法,跟着小编一起来学习一下吧! 实现 注意: 学习本文,需要您对 Vu ...
- Vue组件间传值 v-model
使用过Vue的同学应该都了解组件之间传值 父组件 --> 子组件 : props 子组件 --> 父组件 : 事件 其实有一种更为简单的方法,是基于上述两种方法,那就是 v-model 我 ...
- vue 组件与传值
一.表单输入绑定(v-model 指令) 可以用 v-model 指令在表单 <input>.<textarea> 及 <select> 元素上创建双向数据绑定. ...
- vue 组件间传值方式
/* 父组件给子组件传值 1.父组件调用子组件的时候 绑定动态属性 <v-header :title="title"></v-header> 2.在子组件里 ...
- 第七十四篇:Vue组件父子传值
好家伙, 1.组件之间的关系 在项目开发中,组件之间的最常见关系分为如下两种: (1)父子关系 (2)兄弟关系 2.父子之间的数据共享 (1)父->子共享数据 父组件向子组件共享数据需要使用自定 ...
- vue组件通信传值——Vuex
一.Vuex介绍 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. Vuex 也集成到 Vu ...
- vue 父子组件相互传值
子传父 逻辑: 单击子组件的按钮 ,触发它的单击事件 通过 $emit 触发父级自定义事件 并传一个值给父级 <div id="id"> <h3>儿子 ...
随机推荐
- Linux环境下在Tomcat上部署JavaWeb工程
本文讲解如何将我们已经编译好的JavaWeb工程在Linux环境下的Tomcat上进行部署,总体上的思路是和Windows下JavaWeb项目部署到tomcat差不多,具体步骤和命令如下. 注:部署之 ...
- Code-NFine:jqgrid 数据绑定
ylbtech-Code-NFine:jqgrid 数据绑定 1. jqgrid 基本列展示返回顶部 1. 1.1..cshtml $(function () { gridList(); }) fun ...
- redis简介、安装、配置和数据类型
redis简介.安装.配置和数据类型 redis简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理. 它支持字符串.哈希表.列表.集合.有序集合, ...
- 机器学习(2):简单线性回归 | 一元回归 | 损失计算 | MSE
前文再续书接上一回,机器学习的主要目的,是根据特征进行预测.预测到的信息,叫标签. 从特征映射出标签的诸多算法中,有一个简单的算法,叫简单线性回归.本文介绍简单线性回归的概念. (1)什么是简单线性回 ...
- CSA Round #50 (Div. 2 only) Min Swaps(模拟)
传送门 题意 给出一个排列,定义\(value为\sum_{i=1}^{n-1}abs(f[i+1]-f[i])\) \(swap(a[i],a[j])(i≠j)为一次交换\),询问最少的交换次数使得 ...
- template code 引用的一些问题
1.问题: 引用同一个norlib.tt 下面的tt . 一个KSTrade 正确. 一个 NDAP就报错. 报错说源文件某个函数有错误 helper.Common.tt 错误 2.结果: NDAP ...
- 【Tip】Python
『基本操作』 [查看Python所在目录] import os print(os.__file__) [查看已安装的包] pip list [获取当前脚本所在目录] import sys import ...
- (构造)51NOD 1080 两个数的平方和
给出一个整数N,将N表示为2个整数i与j的平方之和(i <= j),如果有多种表示,按照i的递增序输出. 例如:N = 130,130 = 3^2 + 11^2 = 7^2 + 9^2(注:3^ ...
- 51Nod 1649 齐头并进
#include <iostream> #include <algorithm> #include <cstring> //两遍迪杰斯特拉 #define INF ...
- 关于协程:nodejs和golang协程的不同
nodejs和golang都是支持协程的,从表现上来看,nodejs对于协程的支持在于async/await,golang对协程的支持在于goroutine.关于协程的话题,简单来说,可以看作是非抢占 ...