深入浅出ExtJS(第三版) Ext框架基础

  1 1.准备工作
  2   >.深入浅出Ext JS(第3版)
  3   >.随书代码(图灵社区)
  4   >.ExtJS 4.1.1a
  5
  6 第2章 Ext框架基础
  7 2.1 面向对象的基础架构
  8 2.1.1 创建类
  9   >.定义一个类:
 10   Ext.define(‘demo.Demo‘,{
 11     name:‘Lingo‘,
 12     hello:function () {
 13       return ‘Hello‘+this.name;
 14     }
 15   });
 16   //第一个参数是字符串类型的类名;
 17   //第二个参数是object类型,其中可以填写这个类型的字段和函数;
 18   >.创建一个对象:
 19   var demo = new demo.Demo();
 20
 21 2.1.2 对象继承(extend)
 22   Ext.define(‘demo.DemoWindow‘,{
 23     extend:‘Ext.Window‘,        //继承Ext.Window的所有功能;
 24     title:‘demo title‘,         //扩展(设置标题);
 25     initComponent:function(){   //初始化时默认添加两个子组件;
 26       Ext.apply(this,{          //apply()将一批属性批量复制给当前对象;
 27         items:[{html:‘panel1‘},{html:‘panel2‘}]
 28       });
 29       this.callParent();        //callParent()函数实现对父类函数的快捷调用;
 30     }
 31   });
 32
 33 2.1.3 多重继承(mixin)
 34   Ext.define(‘demo.DemoPanel‘,{
 35     extend:‘Ext.Window‘,        //单根继承
 36     mixins:[‘demo.Demo‘]        //混入(多重继承);将类‘demo.Demo‘的属性都复制给新类;
 37   });
 38
 39 2.1.4 自动生成代码
 40   Ext.define(‘demo.DemoObject‘,{
 41     statices:{ TYPE_DEFAULT : 0 },  //设置静态成员,无须创建对象即可直接调用的属性或函数;
 42     constructor: function() {       //在创建对象时执行初始化的构造函数;
 43       //do some init;
 44     }
 45   })
 46
 47 2.2 统一的组件模型
 48 2.2.1 Ext.Component
 49 //所有Ext组件的基类,组件下所有的子类都可能参与自动化Ext组件的生命周期,执行创建/渲染和销毁;
 50   var box = new Ext.Component({
 51     el: ‘test‘,
 52     style: ‘background-color:red; position:absoulte‘,
 53     pageX: 100,
 54     pageY: 50,,
 55     width: 200,
 56     height: 150
 57   });
 58   box.render();
 59
 60 2.2.2 Ext.Panel
 61 //Ext.Panel继承自Ext.Container;也可无须继承即可直接使用;
 62   var panel = new Ext.Panel({
 63     el:‘test‘,
 64     title:‘测试标题‘,
 65     floating:true,
 66     shadow:true,
 67     draggable:true,
 68     collapsible:true,
 69     html:‘测试内容‘,
 70     pageX:100,
 71     pageY:50,
 72     width:200,
 73     height:150
 74   });
 75   panel.render();
 76
 77 2.2.3 Ext.Container
 78 //继承自Ext.Component;所有可布局组件的超类;
 79 //参数layout:指定当前组件使用何种布局;
 80 //参数items:包含的是当前组件中所有子组件;
 81   new Ext.Viewport({
 82     layout:‘border‘,
 83     items:[{
 84       xtype:‘panel‘
 85       region:‘north‘
 86     },{
 87       region:‘south‘
 88     },{
 89       region:‘west‘
 90     },{
 91       region:‘east‘
 92     },{
 93       region:‘center‘
 94     }]
 95   });
 96
 97 2.3 完善的事件机制
 98 2.3.1 自定义事件
 99 //所有继承自Ext.util.Observable类的控件都可以支持事件;
100 //为这些类的对象定义一些事件,为事件配置监听器;
101 //当某个事件被触发,Ext会自动调用对应的监听器,这就是Ext事件模型;
102   >1.Person类
103   Person = function(name){
104     this.name = name;
105     this.addEvents("walk","eat","sleep");
106     //初始化时调用addEvents()定义了3个事件;
107   }
108   Ext.extend(Person,Ext.util.Observable,{
109     //Person继承Observable所有属性;
110     info:function(){
111       return this.name+"is"+event+"ing.";
112     }
113   });
114   >2.为person添加事件监听器
115   var person = new Person(‘Lingo‘);
116   person.on(‘walk‘,function(){
117     //on()是addListener()的简写形式;
118     //参数一:传递事件名称;
119     //参数二:事件发生时执行的函数;
120     Ext.Msg.alert(‘event‘,person.name+"在走啊走.")
121   });
122   >3.触发person的事件
123   Ext.get(‘walk‘).on(‘click‘,function(){
124   //给walk按钮绑定点击事件;
125     person.fireEvent(‘walk‘);
126     //fireEvent()传入一个事件名称作为参数,该事件对应的监听函数就会执行;
127   });
128
129 2.3.2 浏览器事件
130 //Ext使用Ext.EventManager/Ext.EventObject/Ext.libEvent对原生浏览器事件进行封装;
131 //原生事件处理是通过单一的绑定实现的,但每次只能给一个事件绑定一个事件处理函数;
132 //而Ext可以将同一个事件依次绑定到多个事件处理句柄上;
133   Ext.onReady(function(){
134     var test = Ext.get(‘test‘);
135     //Ext.get(‘test‘):获得HTML中id="test"对应的按钮;
136     test.on(‘click‘,function(){
137       alert("handle1");
138     });
139     test.on(‘click‘,function(){
140       alert("handle2");
141     });
142   });
143
144 2.3.3 Ext.EventObjectImpl
145 //Ext.EventObjectImpl是对事件的封装,将Ext自定义事件和浏览器事件结合在一起使用;
146 //它封装不同浏览器的事件处理函数,为上层组件提供了统一的功能接口;
147   >1.getX()/getY()/getXY():获得发生的事件在页面中的坐标位置;
148   >2.getTarget():返回事件的目标元素;
149   >3.on()/un():事件的绑定与清除;
150   >4.purgeElement():把元素上的所有事件都清除;
151   >5.preventDefault():取消浏览器对当前事件所执行的默认操作;
152   >6.stopPropagation():停止事件传递;(阻止冒泡);
153   >7.stopEvent():停止一个事件;(内部调用preventDefault()和stopPropagation()两个函数,取消浏览器的默认操作,同时停止事件传递);
154   >8.getRelatedTarget():返回与当前事件相关的元素;
155   >9.getWheelDelta():获取鼠标滚轮的delta值;
156   Ext.get(‘test‘).on(‘keypress‘,function(e){
157     //监听函数的参数e就是一个Ext.EventObjectImpl
158     if(e.charCode == Ext.EventObjectImpl.SPACE){
159       Ext.Msg.alert(‘info‘,‘空格‘);
160     }
161   });
时间: 2024-10-19 01:36:57

深入浅出ExtJS(第三版) Ext框架基础的相关文章

深入浅出ExtJS 第三章 表格控件(未完)

1 3.1 表格的特性简介 2 >.Ext中的表格功能:包括排序/缓存/拖动/隐藏某一列/自动显示行号/列汇总/单元格编辑等实用功能; 3 >.表格由类Ext.grid.GridPanel定义,继承自Ext.Panel,其xtype为grid; 4 >.表格控件必须包含列(columns)定义信息,并指定表格的数据存储器(Ext.data.Store); 1 3.2 制作一个简单的表格 2 >1.列的定义是一个JSON数组,它是整个表格的列模型,应该首先创建; 3 var colu

框架基础:关于ajax设计方案(三)---集成ajax上传技术

之前发布了ajax的通用解决方案,核心的ajax发布请求,以及集成了轮询.这次去外国网站逛逛,然后发现了ajax level2的上传文件,所以就有了把ajax的上传文件集成进去的想法,ajax方案的level2的改进就不介绍了,不清楚的可到前几篇博客去看看.我们直接切入主题. 概念介绍: 1. js的FormData:js中在新的版本中已经支持了FormData对象,可以初始化一个空的form,或者初始化已经存在的form,浏览器测试代码. 2. 浏览器的支持:浏览器已支持input=file的

框架基础:ajax设计方案(三)---集成ajax上传技术

之前发布了ajax的通用解决方案,核心的ajax发布请求,以及集成了轮询.这次去外国网站逛逛,然后发现了ajax level2的上传文件,所以就有了把ajax的上传文件集成进去的想法,ajax方案的level2的改进就不介绍了,不清楚的可到前几篇博客去看看.我们直接切入主题. 概念介绍: 1. js的FormData:js中在新的版本中已经支持了FormData对象,可以初始化一个空的form,或者初始化已经存在的form,浏览器测试代码. 2. 浏览器的支持:浏览器已支持input=file的

HBase框架基础(三)

* HBase框架基础(三) 本节我们继续讨论HBase的一些开发常识,以及HBase与其他框架协调使用的方式.在开始之前,为了框架之间更好的适配,以及复习之前HBase的配置操作,请使用cdh版本的HBase开启动相关服务,记得,配置HMaster的HA. 为了方便,cdh版本hbase下载传送门: 链接:http://pan.baidu.com/s/1dFsyakT 密码:xji7,相关配置请参考HBase框架基础(一) * HBase的数据迁移 原因:我们需要问一个问题,何时,HBase的

Python基础教程(第三版)(六) 抽象

一个菜鸡的挣扎 就总结下 and 如果有大佬不小心看到了发现了错误,就欢迎指正 6.1懒惰是一种美德 通过创建函数以调用之可以减少代码量 6.2 抽象和结构 抽象是程序能够被人理解的关键所在(无论对编写程序还是阅读来说,这都至关重要) 函数封装了人不需要关心的实现细节,从而更容易被使用和理解 6.3 自定义函数 6.3.1 给函数编写文档 在def后面添加字符串,相当于给整个函数添加注释,以确保被人理解 __doc_ _是函数的一个属性,可用它来访问函数的文档字符串 我自己的练习: def la

(C/C++)基于SharpUI控件库的插件式框架开发--第三篇框架基础服务库

一个框架基础的东西,一般也是操作的最基础的类,比如char.int.bool等,有时出现内存泄露的问题导致错误的抛出,但是C++开发有的时候就算是抛出异常,那也是靠经验来积累才能非常快速准确的找出错误所在,这就需要在框架中需要添加日志管理的接口,日志管理的好处就是开发者自身在找异常时提供参考,另一个就是如果用户操作时出现问题,也可将日志反馈,帮助快速解决问题:总之了为了更好的扩展完善我的框架,我详细列一下这个基础服务库(XPCore)包含内容: 虽说sharpui控件库内封闭好string类,但

【C# in depth 第三版】温故而知新(1) (转)

声明 本文欢迎转载,原文地址:http://www.cnblogs.com/DjlNet/p/7192354.html 前言 关于这本书(<深入理解C# 第三版>)的详细情况以及好坏,自行搜索即可,我就不啰里啰嗦的,此文责在备份,意在记录一下第二次阅读当中发现原先囫囵吞枣之处,也为了记忆深刻吧.对这里还有一本<Clr via C# 第四版>也准备二次阅读,关于精度细读章节,知乎传送门( 赵姐夫的回答 ): https://www.zhihu.com/question/2728336

复旦大学《高等代数学习指导书(第三版)》前言

本书的第二版自 2007 年出版以来, 得到了广大读者的关心与肯定. 在 8 年来的教学实践过程中, 我们陆续收到了兄弟院校的同行专家以及学生们的各种意见和建议. 另外, 普通高等教育“十二五”国家级规划教材<高等代数学 (第三版)>(复旦大学出版社) 已于 2014 年 10 月正式出版, 因此作为该教材配套的学习方法指导书, 本书第三版的修订工作也提上了议事日程. 本书的第三版保持了第二版原有的框架和体系, 但在以下几个方面做了进一步的修改和完善. 首先, 更正了第二版中出现的错误和不当之

Effective Java第三版(一) ——用静态工厂代替构造器

此文做为<Effective Java>系列的第一篇,所以有必要大概说下此书的特点,当然很多人可能都看过,毕竟是有着Java四大名著之一的大名在外,不过总会有萌新不了解,例如我!<Effective Java>第三版较之上一版新增了对Java7.8.9的一些新特性的条目.而条目的概念可以理解为武功秘籍中的一招一式,学完了每一招一式,就是神功大成之时.第三版在第二版的基础上新增了一些条目数,达到了90条.书就介绍到这里,下面介绍第一条——用静态工厂代替构造器. 对于创建对象,最熟悉的