Sencha-概念-Events(事件)(官网文档翻译10)

煎茶Touch 2的组件和类的触发广泛的事件,在其生命周期的不同点。活动让你的代码,它周围的变化作出反应,并在煎茶触摸是一个关键的概念。

触发事件时,一些有趣的事情发生在一个类。例如,当任何组件被渲染到屏幕上画事件被触发。我们可以侦听该事件通过配置一个简单的监听器的配置:

Ext.create('Ext.Panel',{html:'My Panel',fullscreen:true,listeners:{painted:function(){Ext.Msg.alert('I was painted to the screen');}}});

当你点击上面“实时预览”按钮,你会看到面板的画面呈现给我们的警告消息。一类引发的事件中列出的API页-例如Ext.Panel在写作的时候有28个事件:

将鼠标悬停在“事件”按钮来快速查看哪些事件可

监听事件

画事件本身在某些情况下是有用的,但也有其他活动,你更可能使用。例如,按钮的消防水龙头事件时,他们正在挖掘:

Ext.Viewport.add({xtype:'button',centered:true,text:'My Button',listeners:{tap:function(){alert("You tapped me");}}});

,因为我们喜欢,我们可以添加尽可能多的事件侦听器。在这里,我们要由的调用this.hide()内我们的自来水监听,隐藏按钮,只显示几秒钟后再次混淆我们的用户。当this.hide()被调用时,按钮是隐藏的,发射的隐藏事件。从而触发隐藏监听,等待一秒钟,然后再次显示了按钮的隐藏事件:

Ext.Viewport.add({xtype:'button',centered:true,text:'My Button',listeners:{tap:function(){this.hide();},hide:function(){//waits 1 second (1000ms) then shows the button againExt.defer(function(){this.show();},1000,this);}}});

事件侦听器被称为每次触发事件,这样你就可以继续隐藏和显示按钮为所有的永恒。

配置驱动的事件

大多数类在运行时可重构-例如,您可以更改配置,如高度,宽度或内容在任何时候和组件正确地更新自己在屏幕上。许多这些配置更改触发一个事件被触发-例如按钮的24事件14的名称,像widthchange,hiddenchange和centeredchange的。

这一次,我们的自来水处理程序要调用this.setWidth()到我们的按钮上设置一个随机的宽度。立即我们的widthchange侦听器将通知的变化,随着新的和旧的宽度值:

Ext.Viewport.add({xtype:'button',centered:true,text:'Click me',listeners:{tap:function(){var randomWidth =100+Math.round(Math.random()*200);this.setWidth(randomWidth);},widthchange:function(button, newWidth, oldWidth){alert('My width changed from '+ oldWidth +' to '+ newWidth);}}});

结尾的“变”中的每一个事件被触发作为一个配置选项改变的结果。请注意,您就像任何其他的监听这些事件,这是一个好的知道的公约。

以后添加侦听器

每一个例子,到目前为止,已在类被实例化时,听众参与通过。如果我们已经有一个实例,但是,我们仍然可以增加听众在以后使用上的功能:

var myButton =Ext.Viewport.add({xtype:'button',centered:true,text:'Click me'});myButton.on('tap',function(){alert("Event listener attached by .on");});

在任何时候这种方式,您可以添加新的听众。我们也可以组合使用这些方法,甚至听相同的事件不止一次,如果我们需要:

var myButton =Ext.Viewport.add({xtype:'button',centered:true,text:'Click me',listeners:{tap:function(){alert('First tap listener');}}});myButton.on('tap',function(){alert("Second tap listener");});

这两个事件侦听器的功能,被称为保存的顺序被添加进来

最后,我们可以指定多个监听器使用。上,就像我们可以用一个监听器配置。这是我们的随机宽度设置按钮:

var myButton =Ext.Viewport.add({xtype:'button',centered:true,text:'Click me'});myButton.on({tap:function(){var randomWidth =100+Math.round(Math.random()*200);this.setWidth(randomWidth);},widthchange:function(button, newWidth, oldWidth){alert('My width changed from '+ oldWidth +' to '+ newWidth);}});

删除监听器

正如我们可以在任何时候添加监听器,我们可以删除过,这次使用的联合国。为了删除监听器,它的功能,我们需要一个参考。在上面的例子中,我们刚刚通过了一项功能,直接进入侦听器对象。随叫随 ​​到,这一次,我们要创建的函数,得更早一点,它链接到一个变量称为doSomething的

我们将通过我们的新的doSomething功能,为我们的听众对象,像以前一样。然而这一次,我们将移除侦听器的底部,3秒后再次添加Ext.defer功能。点击该按钮,在第3秒产生一个警告消息,3秒后取消,使我们的听众是什么也没有发生:

var doSomething =function(){alert('handler called');};var myButton =Ext.Viewport.add({xtype:'button',text:'My Button',centered:true,listeners:{tap: doSomething}});Ext.defer(function(){myButton.un('tap', doSomething);},3000);

在这个例子中,我们添加一个按钮像以前一样,但这次还加入了切换按钮,将自来水添加和删除监听器,切换。监听器开始关闭禁用,使用切换按钮,使后来又禁用它:

var myButton =Ext.Viewport.add({xtype:'button',centered:true,text:'Listener Disabled'});var handler =function(){alert('listener called');};Ext.Viewport.add({xtype:'togglefield',docked:'bottom',label:'Toggle Listener',listeners:{change:function(field, thumb, enabled){if(enabled){myButton.on('tap', handler);myButton.setText('Listener Enabled');}else{myButton.un('tap', handler);myButton.setText('Listener Disabled');}}}});

监听器选项

有一些额外的选项,我们可以传递到听众。

范围

里面的处理函数范围的值设置。默认情况下被设置为触发事件,这是经常(但并不总是)你想要什么类的实例。这是允许的我们打电话this.hide,()在第二个例子中隐藏按钮附近开始本指南。

这一次,我们将创建一个按钮和一个小组,然后听取按钮的“自来水”事件,我们的处理程序运行在小组的范围。要做到这一点,我们需要传递的对象,而不是一个处理函数 - 这个对象包含了函数加上范围:

var myButton =Ext.Viewport.add({xtype:'button',centered:true,text:'Click me'});var panel =Ext.create('Ext.Panel',{html:'Panel HTML'});myButton.on({tap:{scope: panel,fn:function(){alert("Running in Panel's scope");alert(this.getHtml());}}});

当你运行这个例子的价值在自来水处理小组。为了说明这一点,我们会设置小组的HTML配置“面板HTML”,然后提醒this.getHtml()在我们的处理程序。当我们轻点按钮,我们确实看到小组的HTML的通知。

有时候我们只需要听一次的事件。事件本身可能触发的次数,但我们只需要听它一次。这很简单:

var myButton =Ext.Viewport.add({xtype:'button',centered:true,text:'Click me',listeners:{tap:{single:true,fn:function(){alert("I will say this only once");}}}});

缓冲区

对于被触发的事件,在短时间内连续地多次,我们可以油门我们的监听器被调用,通过使用缓冲配置的数目的次数。在这种情况下,我们的按钮的自来水监听器将被调用每2秒一次,不管有多少次你点击它:

var myButton =Ext.Viewport.add({xtype:'button',centered:true,text:'Click me',listeners:{tap:{buffer:2000,fn:function(){alert("I will say this only once every 2 seconds");}}}});

射击自己的事件

射击自己的事件是很简单-你可以调用fireEvent与任何事件的名称。在这种情况下,我们会触发一个事件MyEvent的传递两个参数- 1和100之间的数字按钮本身:

var myButton =Ext.Viewport.add({xtype:'button',centered:true,text:"Just wait 2 seconds",listeners:{myEvent:function(button, points){alert('myEvent was fired! You score '+ points +' points');}}});Ext.defer(function(){var number =Math.ceil(Math.random()*100);myButton.fireEvent('myEvent', myButton, number);},2000);

我们再次用Ext.defer延迟触发的功能,自定义事件,这2秒的时间。当事件被触发时,我们MyEvent的监听器拿起它提醒我们传入的参数

结论

煎茶触摸事件是一个重要组成部分,并随时通知您的应用程序在系统中的变化。如果你是新的煎茶触摸,我们建议检查出这些指南,以获得更好的接地一切是如何工作的:

  • 了解组件
  • 理解类系统
posted on 2012-12-26 21:18 CW.Liu 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/cheman/archive/2012/12/26/2834760.html

Sencha-概念-Events(事件)(官网文档翻译10)相关推荐

  1. Sencha-命令-CMD(与Touch的结合运用)(官网文档翻译30)

    Sencha-命令-CMD(与Touch的结合运用)(官网文档翻译30) 介绍 本指南介绍的过程中,使用Sencha Cmd的煎茶触摸应用程序启动的煎茶生成的应用程序命令和结束正在运行的应用程序. 本 ...

  2. Sencha-组件-Chart(图表)(官网文档翻译17)

    Sencha-组件-Chart(图表)(官网文档翻译17) 本指南提供了使用的煎茶触摸2.1的抽奖及图表包的概述.这些软件包,可以在一个通用的方式来创建跨浏览器和跨设备的图形. 在过去的几个月中,平局 ...

  3. Sencha-概念-Layouts(布局)(官网文档翻译8)

    Sencha-概念-Layouts(布局)(官网文档翻译8) 介绍和HBox 布局描述了在您的应用程序的组件的大小和位置.例如,一个电子邮件客户端可能具有固定到左边的消息的列表,以说,可用的宽度的三分 ...

  4. Nginx 官网文档翻译汇总

    Nginx 官网文档,各个模块的手册在这里. Nginx 中文文档 - 淘宝翻译 改版后的新 Nginx 官网文档 概述 新手指南 控制 Nginx 管理员指南 Admin Guide 安装 基本功能 ...

  5. elastic官网文档翻译来.1

    elastic以后简称es. es基本概念: 1.nrt:一种近实时搜索平台,延迟微小(通常1s) 2.cluster:数据集群分布存储,易扩展. 3.node:节点是单个服务器,存储数据,支持集群索 ...

  6. influxdb官网文档翻译

    存储引擎 存储引擎将多个组件结合在一起,并提供用于存储和查询series数据的外部接口. 它由许多组件组成, 每个组件都起着特定的作用: In-Memory Index -- 内存中的索引是分片上的共 ...

  7. Docker 官网文档翻译汇总

    官方文档地址 Guide Docker 入门 Docker 入门教程 方向和设置 容器 服务 swarm 集群 stack 部署应用 概述 用 Docker 进行开发 在 Docker 上开发应用 应 ...

  8. IntelRealSense 深度相机 测量物体的实际长度 —— rs-measure 官网文档翻译

    总览 本教程显示了使用深度数据测量真实世界距离的简单方法. ## Note: 测量真实世界中物体的维度是深度相机的一个明显的应用之一.此样本不是适当的测量工具,而是展示关键概念.使用更好的算法可以显著 ...

  9. Drill官网文档翻译六:存储插件的注册

    我们可以通过存储插件连接到本地文件系统,Hive,HBase,或是其他的数据源.在Drill的web界面的存储插件配置tab,你可以查看修改这些插件的配置.如果不支持HTTPS(默认就没有),你可以访 ...

最新文章

  1. 谷歌NIPS论文Transformer模型解读:只要Attention就够了
  2. SQL Server 2008 远程过程调用失败
  3. 黑马程序员pink老师前端入门教程,零基础必看的JavaScript基础语法视频教程(三)
  4. Judges' Time Calculation
  5. python线程监控_Python实现线程状态监测简单示例
  6. Unity 2017 Game Optimization 读书笔记(2)Scripting Strategies Part 2
  7. 转 c#读写xml文件
  8. 交换机千兆和百兆对网速影响_家里明明装了百兆宽带!为啥网速还这么慢?原因竟然在这!...
  9. block的使用(六)
  10. php用栈遍历目录和文件,php如何遍历目录,php非递归算法遍历目录的例子
  11. linux 统计文件字节和行数,Linux命令-统计文件中的字节数、字数、行数:wc
  12. 【LeetCode】求中位数(数据流、滑动窗口、两个正序数组)
  13. html文档标记语言,html是超文本标记语言标签有
  14. 老年人-傻妞机器人安装及使用教程
  15. 关于身份证号或者手机号,密码 隐藏中间几位数字
  16. Effective Approaches to Attention-based Neural Machine Translation笔记
  17. PBR渲染(四)——PBR头发渲染
  18. 怎么复制黑苹果config配置_黑苹果主机(百分百成功硬件配置)
  19. 可汗学院统计学笔记(一)
  20. linux下iconv()函数的用法

热门文章

  1. 吐血整理《计算机网络五层协议之物理层(中)》
  2. 用Java代码实现日志记录器_如何在此简单的Java日志记录实现中附加到日志文件? - java...
  3. java el表达式 if else_jsp EL表达式和JSTL标签if-else if-else用法
  4. java创建oracle用户_oracle添加用户并指定数据库
  5. 看图说话:用户标签可以这样轻松创建
  6. 从 2017 ChinaJoy 谈起,中国游戏如何数据化前行
  7. python--通过xpath相对节点位置查找元素(续)
  8. Lind.DDD敏捷领域驱动框架~介绍
  9. Sublime编辑器上的 Vim 插件常用快捷键
  10. CSS reset 标签初始化设置