- Sencha Touch 教程
- Sencha Touch - 主页
- Sencha Touch - 概述
- Sencha Touch - 环境
- Sencha Touch - 命名约定
- Sencha Touch - 建筑
- Sencha Touch - MVC 说明
- Sencha Touch - 第一个应用程序
- Sencha Touch - 构建应用程序
- Sencha Touch - 迁移步骤
- Sencha Touch - 核心概念
- Sencha Touch - 数据
- Sencha Touch - 主题
- Sencha Touch - 设备配置文件
- Sencha Touch - 依赖关系
- 环境检测
- Sencha Touch - 活动
- Sencha Touch - 布局
- Sencha Touch - 历史与支持
- Sencha Touch - 上传和下载
- Sencha Touch - 查看组件
- Sencha Touch - 包装
- Sencha Touch - 最佳实践
- Sencha Touch 有用资源
- Sencha Touch - 快速指南
- Sencha Touch - 有用的资源
- Sencha Touch - 讨论
Sencha Touch - 活动
事件是当类发生某些事情时被触发的东西。例如,当单击按钮时或渲染元素之前/之后。
书写事件的方法
以下是编写事件的方法。
- 使用侦听器的内置事件。
- 稍后附加事件
- 自定义事件
使用侦听器的内置事件
Sencha Touch 提供用于在 Sencha Touch 文件中写入事件和自定义事件的侦听器属性。
在 Sencha Touch 中编写监听器
我们将通过向面板添加listen属性来在上一个程序本身中添加监听器,如下所示 -
<!DOCTYPE html> <html> <head> <link href = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/resources/css/sencha-touch.css" rel = "stylesheet" /> <script type = "text/javascript" src = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/sencha-touch-all.js"></script> <script type = "text/javascript"> Ext.application({ name: 'Sencha', launch: function() { Ext.create('Ext.Panel', { html: 'My Panel', fullscreen: true, listeners: { painted: function() { Ext.Msg.alert('I was painted to the screen'); } } }); } }); </script> </head> </html>
这将产生以下结果 -
这样我们也可以在listeners属性中写入多个事件。
同一侦听器中的多个事件
<!DOCTYPE html> <html> <head> <link href = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/resources/css/sencha-touch.css" rel = "stylesheet" /> <script type = "text/javascript" src = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/sencha-touch-all.js"></script> <script type = "text/javascript"> Ext.application({ name: 'Sencha', launch: function() { 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); } }); } }); </script> </head> </html>
它将产生以下结果 -
稍后附加事件
在前面编写事件的方法中,我们在创建元素时就在监听器中编写了事件。
附加事件的另一种方法如下 -
<!DOCTYPE html> <html> <head> <link href = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/resources/css/sencha-touch.css" rel = "stylesheet" /> <script type = "text/javascript" src = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/sencha-touch-all.js"></script> <script type = "text/javascript"> Ext.application({ name: 'Sencha', launch: function() { var myButton = Ext.Viewport.add({ xtype: 'button', centered: true, text: 'Click me' }); myButton.on('tap', function() { alert("Event listener attached by .on"); }); } }); </script> </head> </html>
它将产生以下结果 -
自定义事件
我们可以在 Sencha Touch 中编写自定义事件并使用 fireEvent 方法触发事件。以下示例说明了如何编写自定义事件。
<!DOCTYPE html> <html> <head> <link href = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/resources/css/sencha-touch.css" rel = "stylesheet" /> <script type = "text/javascript" src = "https://cdn.sencha.com/touch/sencha-touch-2.4.2/sencha-touch-all.js"></script> <script type = "text/javascript"> Ext.application({ name: 'Sencha', launch: function() { var myButton = Ext.Viewport.add({ xtype: 'button', centered: true, text: "Just wait 5 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); }, 5000); } }); </script> </head> </html>
一旦页面加载并且文档准备就绪,带有按钮的 UI 页面将出现,并且当我们在 5 秒后触发事件时,一旦文档准备好,警报框将在 5 秒后出现。
在这里,我们编写了自定义事件“myEvent”,并且我们将事件触发为button.fireEvent(eventName);