Vue通讯
vue组件通讯
#props传递数据
- 父->子
//父组件传递数据
<template>
<Children :data="msg"></Children>
</template> <script>
import Children from "./Children";
export default {
components: {
Children
},
data() {
return { msg: 100 };
}
};
</script> //子组件接收数据
<script>
export default {
props: {
name: {
type: Number, //传递数据类型,不符合会发出警告
default: ()=>{} //指定默认值
}
}
};
</script>
#$emit
- 子-父 $emit使用
//子组件 使用$emit自定义事件
<template>
<div @click="handler()">向父组件传递数据</div>
</template> <script>
export default {
methods: {
handler () {
this.$emit('change', '我是向父组件传递的数据');
}
}
};
</script> //父组件
<template>
<Children @change="receive()"></Children>
</template> <script>
import Children from "./Children";
export default {
components: {
Children
},
methods: {
receive (res) {
console.log('res:' + res);
}
}
};
</script>
#.sync
- .sync
用法: 改变子组件或者父组件传递的值。 //父-子 子组件接收参考上面
<template>
<Children :data.sync="msg"></Children>
</template> //子->父
<template>
<div @click="$emit('update:name','向父组件传递的数据')"></div>
</template> <template>
{{ name }}
<Children :name.sync="name"></Children>
</template>
<script>
import Children from "./Children";
export default {
components: {
Children
},
data () {
name: '默认数据'
}
};
</script>
#$parent与$children
- 爷孙组件,this.$parent, this.$children
//向上派发事件
Vue.prototype.$dispatch = function $dispatch(eventName, data) {
let parent = this.$parent;
while (parent) {
parent.$emit(eventName, data);
parent = parent.$parent;
}
}; this.$parent.$emit('change', '调用父组件的emit事件向上派发'); //向下派发事件
Vue.prototype.$broadcast = function $broadcast(eventName, data) {
const broadcast = function () {
this.$children.forEach((child) => {
child.$emit(eventName, data);
if (child.$children) {
$broadcast.call(child, eventName, data);
}
});
};
broadcast.call(this, eventName, data);
}; this.$children 访问子组件
#兄弟组件通信(EventBus)
Vue.prototype.$bus = new Vue(); //兄弟一
<div @click="handler()"></div>
<script>
export default {
methods: {
handler () {
this.$bus.$emit('send', '我是传递的数据');
}
}
};
</script> //兄弟二
<script>
export default {
methods: {
handler () {
let _self = this;
_self.$bus.$on('send', (res) => {
cosole.log('msg:' + msg);
});
}
}
};
</script>
#Provide与inject
//在父组件中注入数据
provide() {
return { parentMsg: "父亲" };
} //在任意子组件中可以注入父级数据
inject: ["parentMsg"] // 会将数据挂载在当前实例上
#$attrs
//父组件
<template>
<Children name="along"></Children>
</template> //子组件
<template>
{{ $attrs }}
//{ "msg": "along" }
</template>
Vue通讯的更多相关文章
- Vue.js——快速入门Vuex
一. 什么是Vuex? Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化. 上图中绿色虚线包裹起 ...
- Vue.js——十分钟入门Vuex
一. 什么是Vuex? Vuex Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化. Vue ...
- Vuex简介
一. 什么是Vuex? Vuex Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化. Vue ...
- vuex 使用
一.什么是Vuex Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化 二. 为什么要使用Vuex ...
- uni-app 生命周期函数
应用生命周期 函数名 说明 onLaunch 当uni-app 初始化完成时触发(全局只触发一次) onShow 当 uni-app 启动,或从后台进入前台显示 onHide 当 uni-app 从前 ...
- uniapp 入门
uniapp官网 uni-app 是一个使用 Vue.js (opens new window)开发所有前端应用的框架,开发者编写一套代码,可发布到iOS.Android.Web(响应式).以及各种小 ...
- 【原】vue单文件组件互相通讯
在vue中,我们可以把一个页面各个部分单独封装起来,做成各种小组件,然后加载,这样的好处是代码维护起来比较容易,重复的代码多处调用! 在一个vue项目中,单文件组件以.vue形式文件命名 每个组件之间 ...
- 【Vue】Vue中的父子组件通讯以及使用sync同步父子组件数据
前言: 之前写过一篇文章<在不同场景下Vue组件间的数据交流>,但现在来看,其中关于“父子组件通信”的介绍仍有诸多缺漏或者不当之处, 正好这几天学习了关于用sync修饰符做父子组件数据双向 ...
- Vue中父子组件通讯——组件todolist
一.todolist功能开发 <div id="root"> <div> <input type="text" v-model=& ...
随机推荐
- c50决策树借款风险
Decision Trees/ Machine Learning Durga Gaddam August 29, 2016 Objective: The objective of the articl ...
- 【批量添加】-SqlBulkCopy语句 标签: sql批量添加 2015-12-20 14:39 1367人阅读 评论(33)
上篇博客我们介绍了通过拼接sql字符串的方法来对sql数据库进行批量添加,但是通过语句拼接insert语句有个缺点,就是每次最多只能添加1000条.当时我们另外一个界面也用到了批量添加,但是这个界面轻 ...
- @atcoder - AGC035D@ Add and Remove
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定 N 张排成一行的卡片,第 i 张卡片上面写着 Ai. 重复 ...
- Hbase数据模型物理视图
- Python深入:修改Python搜索路径
当Python执行import语句时,它会在一些路径中搜索Python模块和扩展模块.可以通过sys.path查看这些路径,比如: >>> import sys >>&g ...
- @topcoder - SRM697D1L3@ ConnectedStates
目录 @description@ @solution@ @accepted code@ @details@ @description@ 有n个城市,每个城市有个权值wi,任意两个城市i,j之间的道路数 ...
- oracle用>=替代>
如果DEPTNO上有一个索引, 高效: SELECT * FROM EMP WHERE DEPTNO >=4 低效: SELECT * FROM EMP WHERE DEPTNO >3 两 ...
- python 多线程,tthread模块比较底层,而threading模块是对thread做了一些包装,multithreading
Python多线程详解 2016/05/10 · 基础知识 · 1 评论· 多线程 分享到:20 本文作者: 伯乐在线 - 王海波 .未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者. 1.多线程的 ...
- typescript基础语法--变量/函数/指令/类
博客地址 :https://www.cnblogs.com/sandraryan/ 要把ts文件引入到html中,首先要转码为js文件. 步骤: 终端运行: npm i -g typescript t ...
- 从规则引擎到复杂事件处理(CEP)
Drools Fusion既是规则引擎,又可以作为CEP.除了事件定义和时间推理之外,对于引擎本身也会有一些不同的使用.主要体现在会话时钟.流模式.滑动窗口和对事件的内存管理. 会话时钟 由于事件的时 ...