Vue 组件的通信
vue不得不了解的就是组件间的数据通信(暂且不谈vuex插件)。
通信方式根据组件之间的关系有不同之处。
组件关系有下面三种:父-->子、子-->父、非父子
1、父-->子
父向子传递数据用prop
<!--子组件代码-->
<template>
<div> {{message}} </div>
</template> <script>
export default{
name="child",
prop: ['message'], //利用prop函数,定义一个"message"变量
data(){ }
}
</script>
<!--父组件代码-->
<template>
<v-child message="msg"> </v-child><!--在这里传值--></template>
<script>
import Child from './child.vue'
export default{
name: 'parent',
components: { 'v-child': Child },
data(){
return{ msg:'hello world'
}
}
</script>
2.子组件给父组件传值($emit) 子组件给父组件传值的中心思想是;通过方法传参,具体用法如下:
<!-- 子组件部分 --> <script>
data(){
return{
msg: '123'
}
},
method: {
funcName: function(){
this.$emit("tanslate",this.msg)
//自定义一个tanslate和一个参数this.msg
}
}
</script>
父页面HTML部分: 通过子页面定义tanslate事件调用自定的tanslateText方法
<v-child v-on:tanslate="tanslateText"> </v-child>
父页面js部分:
method:{
tanslateText:function(text){ //text是字组件传过来的参数
console.log(text) //打印出子组件传递过来的参数
}
}
3.兄弟组件之间传值 创建一个store.js文件,注册Vuex
import Vue from 'vue'
import Vuex from 'vuex' Vue.use(Vuex) //定义state,并将listName设置成一个空对象
const state = {
listName:{}
} /定义mutations,可以传参数,用于设置state里的listName
const mutations = {
set_listname : (state, value) => {
state.listName = value ;
}
} //定义getters,用于获取state里的对象
const getters = {
get_listname: state => {
return{ state.listName
}
} export default new Vuex.store({
getters,
state,
mutations
})
在vue实例中注册store.js
//main.js import Vue from 'vue'
import App from './App'
import store from './style' new Vue({
el : '#app',
route,
store,
template: '<App/>',
components: {App}
})
后续补充完善
Vue 组件的通信的更多相关文章
- vue组件间通信六种方式(完整版)
本文总结了vue组件间通信的几种方式,如props. $emit/ $on.vuex. $parent / $children. $attrs/ $listeners和provide/inject,以 ...
- Vue组件间通信6种方式
摘要: 总有一款合适的通信方式. 作者:浪里行舟 Fundebug经授权转载,版权归原作者所有. 前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的 ...
- VUE组件如何通信
Vue父子组件如何通信? 子组件通知父组件(调用父组件方法) 在父组件使用 on(eventName)监听事件,在子组件使用emit(eventName) 触发事件 : 父组件通知子组件(调用子组件方 ...
- 前端面试 vue 部分 (5)——VUE组件之间通信的方式有哪些
VUE组件之间通信的方式有哪些(SSS) 常见使用场景可以分为三类: 父子通信: null 父向子传递数据是通过 props ,子向父是通过 $emit / $on $emit / $bus Vuex ...
- Vue 组件之间通信 All in One
Vue 组件之间通信 All in One 组件间通信 1. 父子组件之间通信 https://stackblitz.com/edit/vue-parent-child-commutation?fil ...
- vue组件之间通信传值
原文链接:https://blog.csdn.net/lander_xiong/article/details/79018737 我认为这位博主的这篇文章写的非常详细,通俗易懂, 我们这次的vue项目 ...
- vue组件间通信
组件间通信(父子,兄弟) 相关链接\组件通信http://www.cnblogs.com/xulei1992/p/6121974.html 学习链接Vue.js--60分钟快速入门http://www ...
- vue组件之间通信的8种方式
对于vue来说,组件之间的消息传递是非常重要的,下面是我对组件之间消息传递的常用方式的总结. props和$emit(常用) $attrs和$listeners 中央事件总线(非父子组件间通信) v- ...
- vue组件兄弟间通信
四.兄弟组件间通信(event) 借助于一个公共的Vue的实例对象,不同的组件可以通过该对象完成事件的绑定和触发 var bus = new Vue(); bus.$emit()bus.$on() 熊 ...
- vue组件间通信子与父
二.组件间通信(子组件传值给父组件) 通过事件的方式来完成数据的传输. ①在父组件中 定义一个方法,用来接收子组件所通过事件传来的值 methods:{ recvMsg:function(msg){ ...
随机推荐
- Linux之问题诊断工具strace
转载于:https://www.cnblogs.com/lidabo/p/4523755.html 引言 “Oops,系统挂死了..." “Oops,程序崩溃了..." “Oops ...
- 【牛客网】Longest Common Subsequence
[牛客网]Longest Common Subsequence 发现只有d数组最格路 于是我们把前三个数组中相同的数记成一个三维坐标,同一个数坐标不会超过8个 从前往后枚举d,每次最多只会更新不超过8 ...
- 切片(Slice)
Python提供了切片(Slice)操作符:可以一次取出多个列表元素 L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3.0可以省略:L[:3] L[:]:就是整个列表 补充: 前1 ...
- JDBC(Java项目使用Oracle数据库)
Java项目中使用Oracle数据库(Eclipse) 前言 这学期选了Oracle数据库这门课,于是自己下载了Oracle11gR2版本的数据库.在这之前我一直用的是MySQL.虽然两者教程差不多, ...
- Mish:一个新的SOTA激活函数,ReLU的继任者
Mish:一个新的SOTA激活函数,ReLU的继任者 CVer 昨天 以下文章来源于AI公园 ,作者ronghuaiyang AI公园 专注分享干货的AI公众号,图像处理,NLP,深度学习,机器学 ...
- 动手篇:简单的注册界面与防SQL注入(续)
注册前先判断用户名是否已经存在,通过if (SqlHelper.Exists(strSql))查询判断是否已经存在.没存在则进行一个数据插入数据库操作 string strSql1 = string. ...
- Junit 学习笔记
目录 Junit 学习笔记 1. 编写测试用例时需要注意 2. 出现结果分析 3. Junit 运行流程 4. Junit 常用注解 5. Junit 测试套件的使用 6. Junit 参数化设置 J ...
- hdu 1002 prime 模板
Constructing Roads Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- GNU,GPL与自由软件
GNU 是 Richard Stallman(理查德·斯托曼)创建的一个项目,not unix GPL(General Public License),GNU通用公共许可证.书面上的协议 自由软件与开 ...
- SVN 问题解决之 Working copy path does not exist in repository
同事的SVN更新时提示某个特定文件提示 Working copy path does not exist in repository svn更新会被这个错误打断,导致无法完全更新 删掉文件再更新仍然有 ...