组件可以使用Event Emitter装饰器发送数据和事件。

Event 定义

参考:
import { Event, EventEmitter } from '@stencil/core'; ...
export class TodoList { @Event() todoCompleted: EventEmitter; todoCompletedHandler(todo: Todo) {
this.todoCompleted.emit(todo);
}
}

监听事件(Listen)

可以监听,特定元素的事件

参考:
import { Listen } from '@stencil/core'; ...
export class TodoApp { @Listen('todoCompleted')
todoCompletedHandler(event: CustomEvent) {
console.log('Received the custom todoCompleted event: ', event.detail);
}
}

监听键盘事件

@Listen('keydown')
handleKeyDown(ev){
if(ev.keyCode === 40){
console.log('down arrow pressed')
}
} @Listen('keydown.up')
handleUpArrow(ev){
console.log('will fire when up arrow is pressed');
}

jsx 中使用事件

import { Event, EventEmitter } from '@stencil/core';

...
export class TodoList { @Event() todoCompleted: EventEmitter; todoCompletedHandler(todo: Todo) {
this.todoCompleted.emit(todo);
}
} <todo-list onTodoCompleted={ev => this.someMethod(ev)}></todo-list>

参考例子

  • 子组件
import { Component,Event,EventEmitter, State} from '@stencil/core';

@Component({
tag: 'my-child-component',
styleUrl: 'my-child-component.css',
shadow: false,
scoped: false
}) export class MyChildComponent { @Event() userClickEvent: EventEmitter;
UserClickHandler() {
this.userClickEvent.emit({name:"dalong",age:44});
}
@State() name:String="demoapp"
render(){
return (
<div>
<p onClick={_=>this.UserClickHandler()}>click</p>
<p>child component</p>
</div>
);
}
}
  • 父组件
import { Component,State, Prop} from '@stencil/core';

@Component({
tag: 'my-component',
styleUrl: 'my-component.css',
shadow: false,
})
export class MyComponent { // @Listen("userClickEvent")
// getUserClickEvent(event: CustomEvent){
// this.name=JSON.stringify(event.detail)
// }
something(event:CustomEvent){
this.name=JSON.stringify(event.detail)
}
@State() name:String="first info"
@Prop() UserID:String="rong"
render() {
return (
<div >
<p>{this.UserID}</p>
<p>{this.name}</p>
<my-child-component onUserClickEvent={env=>this.something(env)}></my-child-component>
</div>
);
}
}
  • 事件绑定
使用Listen
@Listen("userClickEvent")
getUserClickEvent(event: CustomEvent){
this.name=JSON.stringify(event.detail)
}
使用jsx 绑定:
<my-child-component onUserClickEvent={env=>this.something(env)}></my-child-component>
something(event:CustomEvent){
this.name=JSON.stringify(event.detail)
}

参考资料

https://stenciljs.com/docs/events

 
 
 
 

stenciljs 学习五 事件的更多相关文章

  1. salesforce lightning零基础学习(五) 事件阶段(component events phase)

    上一篇介绍了lightning component events的简单介绍.此篇针对上一篇进行深入,主要讲的内容为component event中的阶段(Phase). 一. 阶段(Phase)的概念 ...

  2. 从零开始学习jQuery (五) 事件与事件对象

    本系列文章导航 从零开始学习jQuery (五) 事件与事件对象 一.摘要 事件是脚本编程的灵魂. 所以本章内容也是jQuery学习的重点. 本文将对jQuery中的事件处理以及事件对象进行详细的讲解 ...

  3. cesium 学习(五) 加载场景模型

    cesium 学习(五) 加载场景模型 一.前言 现在开始实际的看看效果,目前我所接触到基本上都是使用Cesium加载模型这个内容,以及在模型上进行操作.So,现在进行一些加载模型的学习,数据的话可以 ...

  4. TweenMax动画库学习(五)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

  5. SVG 学习<五> SVG动画

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  6. Android JNI学习(五)——Demo演示

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  7. ZigBee学习五 无线温度检测

    ZigBee学习五 无线温度检测 1)修改公用头文件GenericApp.h typedef union h{ uint8 TEMP[4]; struct RFRXBUF { unsigned cha ...

  8. (转)MyBatis框架的学习(五)——一对一关联映射和一对多关联映射

    http://blog.csdn.net/yerenyuan_pku/article/details/71894172 在实际开发中我们不可能只是对单表进行操作,必然要操作多表,本文就来讲解多表操作中 ...

  9. Vue – 基础学习(4):事件修饰符

    Vue – 基础学习(3):事件修饰符

随机推荐

  1. Enter键实现按钮相同功能

    1.在所在的按钮(Enter键功能)的容器上加上onkeydown="saveForKeyDown()",通常加载body上 <!-- 添加窗口--> <div ...

  2. 百度定位SDK

    按照官网要求配置SHA1和包名生成ak秘钥 生成秘钥命令: keytool -list -v -keystore debug.keystore 密码:原始密码为android 添加libs文件夹并在g ...

  3. mysql查询出来的某一列合并成一个字段

    查询所有用户及角色,一个用户会有多个角色 select u.*,sr.* from users u left join sys_user_role sur on sur.userCode=u.id l ...

  4. view_countInfo

    create view view_countInfo as SELECT     a.dwmch, b.dwbh, b.djbh, c.rq, c.shl, c.djbh AS Expr1, d.sp ...

  5. Microsoft Office相关开发组件

    安装office,直接引用COM控件 C#4提供对PIA引用的一种方式:链接(编译器只会将PIA中需要的部分直接嵌入到程序集中),变体(variant)被视为动态类型,以减少强制转换需要的开销: 不安 ...

  6. java 需要看的书籍

    参考链接:http://www.jianshu.com/p/454fc1e6cbe2 最近要看的有:Effective java  深入理解java 虚拟机  java 并发编程实战 (设计模式的书籍 ...

  7. POJ 1007 DNA sorting (关于字符串和排序的水题)

    #include<iostream>//写字符串的题目可以用这种方式:str[i][j] &str[i] using namespace std; int main() {int ...

  8. ReentrantReadWriteLock——写写互斥(二)

    "读写" ."写读"."写写"都是同步的.互斥的 1.Service.java package ReentrantReadWriteLock ...

  9. apache2.4搭建php5.53问题总结

    1.如果Apache handler方式配置php,则最好选择Thread Safe,否则找不到php5apache2_4.dll.如果选择VC6版本以上的php,请到这里http://www.apa ...

  10. 给tabBarItem加点击效果动画

    获取到tabBarItem,添加喜欢的动画 .h文件 @interface JGTabBarController () //记录上一次点击tabbar @property (nonatomic, as ...