组件

组件之间的数据是单向绑定的。

父组件向子组件通信

是通过子组件定义的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 组件通信的更多相关文章

  1. vue组件通信的几种方式

    最近用vue开发项目,记录一下vue组件间通信几种方式 第一种,父子组件通信 一.父组件向子组件传值 1.创建子组件,在src/components/文件夹下新建一个Child.vue 2.Child ...

  2. VUE 组件通信总结

    1.prop 父组件传递给子组件,即通过VUE本身具有的Props属性来传递值 Child组件 <template> <span>{{message}}</span> ...

  3. vue组件通信那些事儿

    一.说说通信 通信,简言之,交流信息.交流结束后,把信息放在哪里,这是一个值得思考的问题.vue中保存状态有2种方式,组件内的data属性和组件外的vuex的state属性. 1.用state的场景 ...

  4. vue组件通信&&v兄弟组件通信eventbus遇到的问题(多次触发、第一次不触发)

    组件通讯包括:父子组件间的通信和兄弟组件间的通信.在组件化系统构建中,组件间通信必不可少的 (vuex以后再说). 父组件--> 子组件 1. 属性设置 父组件关键代码如下: <templ ...

  5. vue 组件通信传值

    父子组件通信: 子组件 <template> <div> <h3 @click="alerrt"> 我是子组件一</h3> < ...

  6. Vue组件通信之Bus

    关于组件通信我相信小伙伴们肯定也都很熟悉,就不多说了,对组件通信还不熟悉的小伙伴移步这里. 在vue2.0中 $dispatch 和 $broadcast 已经被弃用.官方文档中给出的解释是: 因为基 ...

  7. Vue组件通信的几种方法

    上一节说到,vue.js是允许子组件通过props接受父组件的信息,但是不允许父组件通过props接受子组件的信息 1. $emit()和on 当子组件需要向父组件传递数据时,就要用到自定义事件. 使 ...

  8. vue组件通信之父子组件通信

    准备工作: 首先,新建一个项目,如果这里有不会的同学,可以参考我转载过的文章 http://www.cnblogs.com/Sky-Ice/p/8875958.html  vue 脚手架安装及新建项目 ...

  9. vue组件通信之非父子组件通信

    什么顺序不顺序的.. 先来说说非父子组件通信. 首先,我们先来了解下vue中的 1.$emit  触发当前实例上的事件,附加参数都会传给监听器回调. 2.$on  监听当前实例上的自定义事件.事件可以 ...

随机推荐

  1. django 利用pillow 进行简单的设置验证码(python)

    1.导入模块 并定义一个验证状态 from PIL import Image, ImageDraw, ImageFont from django.utils.six import BytesIO de ...

  2. 支付宝2018年最新SDK对接验签的问题

    下单加签 AopUtils.SignAopRequest(sortedTxtParams,应用私钥, "UTF-8", false, "RSA2"); 异步回调 ...

  3. UML建模工具

    UML:Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段 ...

  4. css实现超出两行隐藏

    overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-box-orient:vertical; -webkit-l ...

  5. VIM批量缩进

    方法一 1.按 ctrl + shif + ;  进入底行模式 2.将所要批量缩进的行号写上,按照格式:“行号1,行号2>”输入命令,如要将4至11行批量缩进一个tab值,则命令为“4,11&g ...

  6. CSS Media媒体查询使用大全,完整媒体查询总结

    前面的话 一说到响应式设计,肯定离不开媒体查询media.一般认为媒体查询是CSS3的新增内容,实际上CSS2已经存在了,CSS3新增了媒体属性和使用场景(IE8-浏览器不支持).本文将详细介绍媒体查 ...

  7. 【面试篇】资深招聘HR有哪些面试技巧?

    15年资深招聘HR总结的面试技巧     1.做一下自我介绍 了解应聘者的基本信息和工作经历 2.以往工作中您的职责是什么? 了解应聘者的相关工作经验和其系统性全面性 3.请讲一下您以往的工作经历. ...

  8. Kubernetes 笔记 04 架构是个好东西

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...

  9. CentOS 6.5系统上安装SVN服务器

    有效地管理源代码的方式是使用工具去帮助我们管理 , SVN(Subversion)就是目前主流的源代码管理工具 , 也称为版本控制工具. 本文主要介绍CentOS6.5上安装SVN服务器,配置SVN服 ...

  10. js获取input上传文件名和后缀

    var file = $("#filedata").val(); var pos = file.lastIndexOf("\\");  var filename ...