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=& ...
随机推荐
- iOS 多个精致动画
iOS 多个精致动画 http://www.cocoachina.com/bbs/read.php?tid=301262 iOS 零碎小知识 http://www.cocoachina.co ...
- Azkaban3.x
Azkaban3.x安装部署 官方文档地址 三种模式 solo-server模式:exec进程和web进程为同一个进程,存放元数据的数据库为H2 two-server模式:与之前的单机版本类似,exe ...
- JavaScript void
我们经常会使用到 javascript:void(0) 这样的代码,那么在 JavaScript 中 javascript:void(0) 代表的是什么意思呢? javascript:void(0) ...
- WPF动画应用-几何图形扩散动画
原文:WPF动画应用-几何图形扩散动画 最终效果图: 本实例中用到了DoubleAnimation和Storyboard两个类. 如果想系统学习的话可以直接点击链接看官方文档. 源码: 首先,在页面上 ...
- uni-app禁止滑动穿透
<view class="topWrapper" v-show="chooseShow" @click="chooseShow = false& ...
- saltStack 状态模块(状态间的关系)
unless onlyif:状态间的条件判断,主要用于cmd状态模块 常用方法: onlyif:检查的命令,仅当'onlyif' 选项指向的命令返回true时才执行name 定义的命 unle ...
- pytorch 优化器调参
torch.optim 如何使用optimizer 构建 为每个参数单独设置选项 进行单次优化 optimizer.step() optimizer.step(closure) 算法 如何调整学习率 ...
- angular select框 option空行
1.使用option <select class="form-control" ng-model="searchType"> <option ...
- ip2long之后有什么好处?
ip2long需要bigint来存储,而且在32位和64位系统中存储方式还有区别: 而保存成字符串,只需要char20即可. 那么,ip2long好处在哪? 做投票项目的时候,将ip地址处理后用int ...
- python组件之wtforms
简介 帮助我们在HTML中快速生成form标签,同时还可以对用户提交的form请求的数据进行验证. 安装 pip3 install wtforms 使用 创建对象:构建form标签 class Log ...