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 监听当前实例上的自定义事件.事件可以 ...
随机推荐
- 将本地jar包打包到本地仓库和上传到私服
1.本地jar打包到本地仓库 mvn install:install-file -Dfile=jar包完整地址或相对地址 -DgroupId=自定义的groupID -DartifactId=自定义的 ...
- Java 短信发送
package com.test; import org.apache.commons.httpclient.Header;import org.apache.commons.httpclient.H ...
- 消息队列RabbitMq、ActiveMq、ZeroMq、kafka之间的比较
MQ框架非常之多,比较流行的有RabbitMq.ActiveMq.ZeroMq.kafka.这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求.下面我列出这些MQ之间的对比数据和资料. 第一部 ...
- 巡风源码阅读与分析---nascan.py
Nascan是巡风主要是做目标的资产识别(信息收集). nascan.py 文件位于 nascan/nascan.py # coding:utf-8 # author:wolf@YSRC import ...
- Tomcat相关面试题,看这篇就够了!保证能让面试官颤抖!
Tomcat相关的面试题出场的几率并不高,正式因为如此,很多人忽略了对Tomcat相关技能的掌握. 这次整理了Tomcat相关的系统架构,介绍了Server.Service.Connector.Con ...
- Visual Studio 2017 怎么将自动生成属性设置为旧版格式
工具:Visual Studio 2017 1.点击工具,进入选项 2.选项窗口左侧找到C#--代码样式,点击 3.找到表达式首选项中:使用属性的表达式主体.使用索引器的表达式主体和使用访问器的表达式 ...
- Python内置函数(37)——len
英文文档: len(s) Return the length (the number of items) of an object. The argument may be a sequence (s ...
- Java中的String,StringBuilder,StringBuffer三者的区别(转载)
最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...
- 说一说MVC的控制器(二)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- .net core在Ocelot网关中统一配置Swagger
最近在做微服务的时候,由于我们是采用前后端分离来开发的,提供给前端的直接是Swagger,如果Swagger分布在各个API中,前端查看Swagger的时候非常不便,因此,我们试着将Swagger集中 ...