博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Extjs学习(3):事件和动作
阅读量:6229 次
发布时间:2019-06-21

本文共 4035 字,大约阅读时间需要 13 分钟。

hot3.png

1. 什么是事件?

    事件+监听对象

Ext.create('Ext.Panel', {            html: 'My Panel',    renderTo: Ext.getBody(),    listeners: {        afterrender: function() {            Ext.Msg.alert('We have been rendered');        }    }});

    当前有45个事件类型

2. 监听事件的发生

    点击按钮触发事件:MessageBox

Ext.create('Ext.Button', {    text: 'Click Me',    renderTo: Ext.getBody(),    listeners: {        click: function() {            Ext.Msg.alert('I was clicked!');        }    }});

    点击按钮触发事件:this.hide() 

//点击按钮则隐藏//在button里面定义监听者Ext.create('Ext.Button', {    renderTo: Ext.getBody(),    text: 'My Button',    listeners: {        mouseover: function() {            this.hide();        },        hide: function() {            // Waits 1 second (1000ms), then shows the button again            Ext.defer(function() {                this.show();            }, 1000, this);        }    } });

3. 稍后定义监听者:在组件创建完成后

//先定义了buttonvar button = Ext.create('Ext.Button', {    renderTo: Ext.getBody(),    text: 'My Button'});//在定义监听事件button.on('click', function() {    Ext.Msg.alert('Event listener attached by .on');});
var button = Ext.create('Ext.Button', {    renderTo: Ext.getBody(),    text: 'My Button'});button.on({    mouseover: function() {        this.hide();    },    hide: function() {        Ext.defer(function() {            this.show();        }, 1000, this);    }});

4. 移除监听

//下面定义了3秒后移除监听var doSomething = function() {    Ext.Msg.alert('listener called');};var button = Ext.create('Ext.Button', {    renderTo: Ext.getBody(),    text: 'My Button',    listeners: {        click: doSomething,    }});Ext.defer(function() {    button.un('click', doSomething);}, 3000);

5. 范围监听选项

var panel = Ext.create('Ext.Panel', {    html: 'Panel HTML'});var button = Ext.create('Ext.Button', {    renderTo: Ext.getBody(),    text: 'Click Me'});button.on({    click: {        scope: panel,                //定义范围,也可以改成  scope:button,        fn: function() {            Ext.Msg.alert(this.getXType());        }    }});

6. 只监听事件一次:不使其重复触发事件

var button = Ext.create('Ext.Button', {    renderTo: Ext.getBody(),    text: 'Click Me',    listeners: {        click: {            single: true,            //single属性            fn: function() {                Ext.Msg.alert('I will say this only once');            }        }    }});

7. 使用缓冲配置:

//不管你点击多少次,只要在2秒内,他只触发一次事件var button = Ext.create('Ext.Button', {    renderTo: Ext.getBody(),    text: 'Click Me',    listeners: {        click: {            buffer: 2000,            fn: function() {                Ext.Msg.alert('I say this only once every 2 seconds');            }        }    }});

8. 触发自定义事件

var button = Ext.create('Ext.Button', {    renderTo: Ext.getBody(),    text: "Just wait 2 seconds",    listeners: {        //监听者触发了一个myEvent事件,包含button自身,以及一个调用1-100之间的随机数        myEvent: function(button, points) {            Ext.Msg.alert('myEvent fired! You score ' + points + ' points');        }    }});Ext.defer(function() {    var number = Math.ceil(Math.random() * 100);    //通过事件名button调用fireEvent    button.fireEvent('myEvent', button, number);}, 2000);

9. 监听DOM事件:不是所有Extjs组件可以引发事件,设置容器的参数

var container = Ext.create('Ext.Container', {    renderTo: Ext.getBody(),    html: 'Click Me!',    listeners: {        click: function(){            Ext.Msg.alert('I have been clicked!')          }    }});container.getEl().on('click', function(){     this.fireEvent('click', container); }, container);

10. 事件的规范化:Extjs5版本以上,关键应用在touch-screen设备

    从鼠标点击等效到触摸或手指点击

// a mouse event,myElement.on('mousedown', someFunction);

    事件系统转译成设备支持的touchstart

myElement.on('touchstart', someFunction);

    或者转译成支持的pointerdown

myElement.on('pointerdown', someFunction);

    注:并非所有的操作都是那么好转译的

11. 动作:Gestures

    除了标准的DOM事件外,Elements也可以应用到“gesture”事件,主要用在Sencha Touch

    有3中最初的类型:(pointer, touch, 和 mouse 事件)start, move, 和 end

Event Touch Pointer Mouse
Start touchstart pointerdown mousedown
Move touchmove pointermove mousemove
Stop touchend pointerup
//Ext JS 5允许任何手势回应任何类型的输入Ext.get('myElement').on('longpress', handlerFunction);

转载于:https://my.oschina.net/chumingcheng/blog/617040

你可能感兴趣的文章
Navicat for MySQL 11 Mac安装教程
查看>>
Navicat 如何调整栏位结构
查看>>
食品安全溯源区块链解决方案探索
查看>>
关于Spring Data JPA的save()保存,MySQL字段默认值无效
查看>>
数据结构——二叉树(PHP)
查看>>
MySQL实时性能监控工具doDBA tools
查看>>
ListView 局部刷新实现思路
查看>>
JSON笔记之在PHP语言中使用JSON
查看>>
函数的指针
查看>>
Jquery AJAX使用踩坑小记
查看>>
ubuntu下安装Apache+PHP+Mysql
查看>>
Bootstrap 过渡效果(Transition)插件
查看>>
[Linux]-Linux 命令大全
查看>>
mysql将查询到的数据导出到Excel
查看>>
Android 切换系统语言源码分析
查看>>
API 调用次数限制实现
查看>>
我的网站搭建 (第十八天) 自定义用户模型
查看>>
排序应该在数据库还是在应用程序中进行?
查看>>
java过滤特殊字符的正则表达式,正则表达式学习
查看>>
VM VirtualBox安装CentOS 7 64位实践
查看>>