events

events是WePY组件事件处理函数对象,存放响应组件之间通过broadcast、emit、$invoke所传递的事件的函数。

$broadcast —— 父往子传

$broadcast事件由父组件发起,所有的子组件都会收到父组件发出的数据,嗯,类似于村口的广播大喇叭。他的传播顺序为:

在父组件的某个函数内,向子组件下发了index-broadcast这个通知,如下:

// template
<mybtn></mybtn> // script
onShow(){
this.$broadcast('index-broadcast', '我正在测试哈哈哈哈');
}

那么在子组件中,可以用这种方法来接受数据:

// template
<button>{{title}}</button> // script
props = {
title: String
}
events = {
'index-broadcast': (...args) => {
this.title = args[0]; // 我正在测试哈哈哈哈
//可以通过以下方法拿到子组件名称+拿到数据的事件名称+事件的来源
let $event = args[args.length - 1]
console.log($event)
console.log(`${this.$name} receive ${$event.name} from ${$event.source.$name}`)
}
}

$emit —— 子往父传

emit 与 broadcast 正好相反,事件发起组件的所有祖先组件会依次接收到emit事件,如果组件 ComE 发起一个 emit 事件,那么接收到事件的先后顺序为:组件ComA、页面Page_Index。如下图:

onLoad(){
this.emptyData = this.$parent.emptyData
setTimeout(() => {
this.$emit('index-emit', 'jack')
}, 3000)
}

我们可以看到counter组件的plus方法向父组件$emit了一个一个名叫index-emit的方法,父组件该如何接收他?
直接在父组件的events里面写就好啦:

events = {
'index-emit': (...arg) => {
this.username = arg[0];
}
}

$invoke —— 父往子传

$invoke是一个页面或组件对另一个组件中的方法的直接调用,通过传入组件路径找到相应的组件,然后再调用其方法。

比如,想在页面Page_Index中调用组件ComA的某个方法:

this.$invoke('ComA', 'someMethod', 'someArgs');

在父组件中,想要调用子组件counter的某个方法,如下:

this.$invoke('emptyStatus', 'showEmpty', 111, 222)
this.$invoke('emptyStatus', 'hideEmpty', 333, 444)

那么在子组件中可以通过这样来接收父组件传过来的参数:

methods = {
showEmpty(a, b){
console.log(a); //
console.log(b); //
this.blockStatus = true
},
hideEmpty(a, b){
console.log(a); //
console.log(b); //
this.blockStatus = false
}
}

文章来源:https://www.jianshu.com/p/c87ab3c1681d

wepy中组件之间通信方法的更多相关文章

  1. React中组件之间通信的方式

    一.是什么 我们将组件间通信可以拆分为两个词: 组件 通信 回顾Vue系列的文章,组件是vue中最强大的功能之一,同样组件化是React的核心思想 相比vue,React的组件更加灵活和多样,按照不同 ...

  2. AngularJS中控制器之间通信方法

    在同个angular应用的控制器之间进行通信可以有很多种不同的方式,本文主要讲两种: 基于scope继承的方式和基于event传播的方式 基于scope继承的方式 最简单的让控制器之间进行通信的方法是 ...

  3. 【Vue课堂】Vue.js 父子组件之间通信的十种方式

    这篇文章介绍了Vue.js 父子组件之间通信的十种方式,不管是初学者还是已经在用 Vue 的开发者都会有所收获.无可否认,现在无论大厂还是小厂都已经用上了 Vue.js 框架,简单易上手不说,教程详尽 ...

  4. [转] React 中组件间通信的几种方式

    在使用 React 的过程中,不可避免的需要组件间进行消息传递(通信),组件间通信大体有下面几种情况: 父组件向子组件通信 子组件向父组件通信 跨级组件之间通信 非嵌套组件间通信 下面依次说下这几种通 ...

  5. vue 和 react 组件间通信方法对比

    vue 和 react 组件间通信方法对比: 通信路径 vue的方法 react的方法 父组件 => 子组件 props(推荐).slot(推荐).this.$refs.this.$childr ...

  6. 前端面试 vue 部分 (5)——VUE组件之间通信的方式有哪些

    VUE组件之间通信的方式有哪些(SSS) 常见使用场景可以分为三类: 父子通信: null 父向子传递数据是通过 props ,子向父是通过 $emit / $on $emit / $bus Vuex ...

  7. Vue中组件间通信的方式

    Vue中组件间通信的方式 Vue中组件间通信包括父子组件.兄弟组件.隔代组件之间通信. props $emit 这种组件通信的方式是我们运用的非常多的一种,props以单向数据流的形式可以很好的完成父 ...

  8. React中组件间通信的方式

    React中组件间通信的方式 React中组件间通信包括父子组件.兄弟组件.隔代组件.非嵌套组件之间通信. Props props适用于父子组件的通信,props以单向数据流的形式可以很好的完成父子组 ...

  9. Vue2.0组件之间通信

    Vue中组件这个特性让不少前端er非常喜欢,我自己也是其中之一,它让前端的组件式开发更加合理和简单.笔者之前有写过一篇Vue2.0子父组件通信,这次我们就来聊一聊平级组件之间的通信. 首先我们先搭好开 ...

随机推荐

  1. Vertex Covers(高维前缀和)

    Vertex Covers 时间限制: 5 Sec  内存限制: 128 MB提交: 5  解决: 3 题目描述 In graph theory, a vertex cover of a graph ...

  2. HDU 3086 马拉车模板

    模板,但是对这个算法还是不太清楚,真实不明觉厉.... #include <iostream> #include <cstdio> #include <string.h& ...

  3. Leetcode463.Island Perimeter岛屿的周长

    给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域. 网格中的格子水平和垂直方向相连(对角线方向不相连).整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地 ...

  4. Redis源码解析:14Redis服务器与客户端间的交互

    Redis服务器是典型的一对多服务器程序,通过使用由IO多路复用技术实现的文件事件处理器,Redis服务器使用单线程单进程的方式来处理命令请求,并与多个客户端进行网络通信. Redis客户端与服务器之 ...

  5. 理解 Python 语言中的 defaultdict

    众所周知,在Python中如果访问字典中不存在的键,会引发KeyError异常(JavaScript中如果对象中不存在某个属性,则返回undefined).但是有时候,字典中的每个键都存在默认值是非常 ...

  6. Ubuntn16.04安装opencv3.1(特别注意环境变量)

    参考:http://lib.csdn.net/article/opencv/25737: http://blog.csdn.net/yiranyhy/article/details/72935499: ...

  7. 严格模式下顶层箭头函数this指向的是全局对象

    我们知道普通函数调用,this在非严格模式下指向全局对象,在严格模式下是undefined.那箭头函数呢?我们知道,箭头函数没有自己的this,它的this是最近外层非箭头函数的this,那直接在顶层 ...

  8. java swing多线程

    比如一个爬虫 在界面上显示当前时间,每秒都刷新一次用来判断软件是不是卡死 在爬取程序运行的时候,界面可能会卡死 那这就要把爬取程序放在另一个线程里边 同时,也可以把rtc放在另一个线程里边 具体代码, ...

  9. Listview的条目item内的点击响应事件

    还是这张图 这里的历史列表就是一个ListView,抛开该界面中ScrollView或者RecycleView与该ListView会有冲突,所谓的冲突,说白了就是父控件与子控件两者间的关系冲突,该冲突 ...

  10. Android学习笔记之mainfest文件中android属性

    android:allowTaskReparenting 是否允许activity更换从属的任务,比如从短信息任务 切换到浏览器任务. -------------------------------- ...