vue 组件通信
组件
组件之间的数据是单向绑定的。
父组件向子组件通信
是通过子组件定义的props属性来实现。通过props定义变量与变量类型和验证方式。
props简化定义
在简化定义中,变量是以数组的方式定义。
Vue.component("test",{
template:'....',
props:["变量1","变量2",...]
})
props完整定义
完整定义是采用字面量形式,type 要定义的类型
Vue.component("test",{
template:'....',
props:{
name:String, // 变量:类型,
name1:[String,Number] // 多类型:表示可为字符串或数值类型
name2:{
type:Array, // 数组或对象类型 要设置一个默认值。
default(){
return [];
}
},
name3:{
type:String,
required:true, // 必传
}
name3:{
type:String,
validator(value){
//... 自定义数据验证方式。
}
}
}
})
通信方式
父组件向子组件定义的变量绑定值。
<p>父组件向子组件传递数据count数据,采用v-bind进行数据绑定了,当父组件值变动时子组件也会变。</p>
<div class="app">
<input v-model="count">
<my-component :number="count"></my-component>
</div>
<script>
// 定义子组件
Vue.component("my-component", {
props:["number"],
template:`<span>动态接收:{{number}}</span>`,
});
new Vue({
el: ".app",
data: {
count: 0
}
});
</script>
子组件向父组件通信
子组件向父组件通信采用的是自定义事件。$emit与$on。
<p>子组件向父组件通信采用的是自定义事件。$emit与$on。</p>
<div class="app">
{{count}}
<!-- 相当于设置接收对象 -->
<my-component @add="getcount"></my-component>
</div>
<script>
// 定义子组件
Vue.component("my-component", {
data() {
return {
count: 0
}
},
template: `<button @click="test">+1</button>`,
methods: {
test() {
this.$emit('add', ++this.count); // 当监听事件被触发后,向接收对象传递信息,告诉它变化量。
}
} });
new Vue({
el: ".app",
data: {
count: 0
},
methods:{
getcount(value){
this.count = value;
}
}
});
</script>
同级组件通信(任意级别组件通信)
采用中央事件总线(bus)来实现。就是创建一个空的vue对象,在要接收数据的组件里面设置$on事件,在要监听的组件里面设置$emit.
<p>同级组件,组件1向组件2传递数据。</p>
<p>当组件+1事件触发后,向组件2传递结果。</p>
<div class="app">
<my-component-1></my-component-1>
<my-component-2></my-component-2>
</div>
<script>
let bus = new Vue(); // 定义子组件
Vue.component("my-component-1", {
data() {
return {
count: 0
}
},
template: `<button @click="test">+1</button>`,
methods: {
test() {
bus.$emit('on-add', ++this.count);
}
} }); // 定义子组件
Vue.component("my-component-2", {
data() {
return {
count: 0
}
},
template: `<span>{{count}}</span>`,
mounted() {
bus.$on("on-add", (vlaue) => {
this.count = vlaue
})
}
});
new Vue({
el: ".app"
});
</script>
vue 组件通信的更多相关文章
- vue组件通信的几种方式
最近用vue开发项目,记录一下vue组件间通信几种方式 第一种,父子组件通信 一.父组件向子组件传值 1.创建子组件,在src/components/文件夹下新建一个Child.vue 2.Child ...
- VUE 组件通信总结
1.prop 父组件传递给子组件,即通过VUE本身具有的Props属性来传递值 Child组件 <template> <span>{{message}}</span> ...
- vue组件通信那些事儿
一.说说通信 通信,简言之,交流信息.交流结束后,把信息放在哪里,这是一个值得思考的问题.vue中保存状态有2种方式,组件内的data属性和组件外的vuex的state属性. 1.用state的场景 ...
- vue组件通信&&v兄弟组件通信eventbus遇到的问题(多次触发、第一次不触发)
组件通讯包括:父子组件间的通信和兄弟组件间的通信.在组件化系统构建中,组件间通信必不可少的 (vuex以后再说). 父组件--> 子组件 1. 属性设置 父组件关键代码如下: <templ ...
- vue 组件通信传值
父子组件通信: 子组件 <template> <div> <h3 @click="alerrt"> 我是子组件一</h3> < ...
- Vue组件通信之Bus
关于组件通信我相信小伙伴们肯定也都很熟悉,就不多说了,对组件通信还不熟悉的小伙伴移步这里. 在vue2.0中 $dispatch 和 $broadcast 已经被弃用.官方文档中给出的解释是: 因为基 ...
- Vue组件通信的几种方法
上一节说到,vue.js是允许子组件通过props接受父组件的信息,但是不允许父组件通过props接受子组件的信息 1. $emit()和on 当子组件需要向父组件传递数据时,就要用到自定义事件. 使 ...
- vue组件通信之父子组件通信
准备工作: 首先,新建一个项目,如果这里有不会的同学,可以参考我转载过的文章 http://www.cnblogs.com/Sky-Ice/p/8875958.html vue 脚手架安装及新建项目 ...
- vue组件通信之非父子组件通信
什么顺序不顺序的.. 先来说说非父子组件通信. 首先,我们先来了解下vue中的 1.$emit 触发当前实例上的事件,附加参数都会传给监听器回调. 2.$on 监听当前实例上的自定义事件.事件可以 ...
随机推荐
- Validator验证框架
Validator验证框架 系统分析 在设计Validator验证框架时,需要明确以下问题. (1)当用户没有输入数据时,弹出英文提示信息. (2)当用户输入的数据长度大于系统设置的数据长度,弹出英文 ...
- gradle环境变量设置_配置注意事项
看<Spring源码深度解析>的时候,在windows7系统中按照书里配置gradle环境变量,配置完后输入gradle -v,一直显示:'gradle'不是内部或外部命令,也不是可执行的 ...
- 浅谈Java的主要学习要点_上海尚学堂java培训课程思维导图
Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言.Java 技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用于PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网,同时拥 ...
- [Swift]LeetCode68. 文本左右对齐 | Text Justification
Given an array of words and a width maxWidth, format the text such that each line has exactly maxWid ...
- [Swift]LeetCode351. 安卓解锁模式 $ Android Unlock Patterns
Given an Android 3x3 key lock screen and two integers m and n, where 1 ≤ m ≤ n ≤ 9, count the total ...
- 代码覆盖率 (Code Coverage)从简到繁 (一)
代码覆盖率(Code Coverage)是反映测试用例对被测软件覆盖程度的重要指标,也是衡量测试工作进展情况的重要指标.它也是对测试工作进行量化的重要指标之一,测试工作往往不如开发那样激动人心,一个重 ...
- Python数据挖掘(爬虫强化)
(我喜欢雨天,因为雨天我可以回到童年踩水花!哈!) 2018年 --7月--12日 : 多云又暴雨 T—T 前言 我要把爬虫的终极利器介绍一下,这个只要是我们肉眼能看到的,就算在源码中或者在json中 ...
- hdu:2036.改革春风吹满地
Problem Description “ 改革春风吹满地,不会AC没关系;实在不行回老家,还有一亩三分地.谢谢!(乐队奏乐)” 话说部分学生心态极好,每天就知道游戏,这次考试如此简单的题目,也是云里 ...
- exec族函数详解及循环创建子进程
前言:之前也知道exec族函数,但没有完全掌握,昨天又重新学习了一遍,基本完全掌握了,还有一些父子进程和循环创建子进程的问题,还要介绍一下环境变量,今天分享一下. 一.环境变量 先介绍下环境的概念和特 ...
- SpringBoot完美配置阿里云的文件上传
新建一个config类 AliyunOSS.java @Configuration @Data public class AliyunOSS { private OSSClient ossClient ...