【初学EXT】基础知识

学习背景:三个月之前我对EXT还处于一无所知的状态,迫于新工作的要求,和自我提升的压力,我不得不四处搜罗面着学习EXT,从最简单的helloword学起
       知识背景:我有java基础,使用JS进行过web开发
       我坚信:没有学不会,只有不会学

         开篇


首先要知其然,然后再知其所以然
最好的老师莫过于官网,没有人会比开发公司更了解自己的产品

官网地址: 中文:  http://extjs.org.cn/       英文:http://www.sencha.com/products/extjs

 

开始学习啦:

按照我惯常的学习思路是要先在官网找到quik start 然后照猫画虎开始学习的,但是这一次有些与众不同,官网的大体浏览让我有些眼花缭乱无从下手,为了尽快入门,我的学习步骤调整如下:
1.官网例子学习helloworld
2.简单教程学习语法
3.各个击破
   控件
   布局
   监听

一、helloworld

地址:ExtJs"入门"
使用版本:ext-3.4.0
建立基本项目:
项目目录:

 

HelloWerld.html

 

 

 

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  2. <html>  
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  4. <title>Hello World</title>  
  5. <link rel="stylesheet" type="text/css"  
  6.     href="EXT/resources/css/ext-all.css" />  
  7. <script type="text/javascript" src="EXT/ext-base.js"></script>  
  8. <script type="text/javascript" src="EXT/ext-all.js"></script>  
  9. <script type="text/javascript">  
  10.     Ext.onReady(function() {  
  11.         alert('Hello World!');  
  12.     });  
  13. </script>  
  14. </head>  
  15. <body>  
  16. </body>  
  17. </html>  

web.xml

 

 

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">  
  3.   <display-name>QuickStartExt</display-name>  
  4.   <welcome-file-list>  
  5.     <welcome-file>HelloWorld.html</welcome-file>  
  6.   </welcome-file-list>  
  7. </web-app>  

效果展示:

 

之后测试代码如不单独指出,则是直接替换掉alert('Hello World!'); 进行效果测试

 

二、语法学习(要基本理解,动手实践)

 

教材:轻松搞定EXTJS  (在我的下载资源中可以进行下载阅读)

 

先通读重要章节,基本目标学会语法

 

命名空间(namespace)

 

语法:Ext.namespace(“命名空间”)
示例:Ext.namespace("com.aptech");

 

通常基于命名空间创建新类,按照java 的设计思想,会有封装、继承和多态。Extjs 也不例外,而且Extjs 为OOP 做了很多基础工作,使用起来非常模式化。一个类至少应该有private 和public 成员,且可以派生出子类,并能重写父类的方法。

 

例:

 

[javascript] view plain copy print ?
  1. Ext.namespace("com.aptech");  
  2. com.aptech.First = function(){  
  3.    //私有成员  
  4.     var kiss = "中华人民共和国";  
  5.    //私有方法  
  6.    //公有方法  
  7.     return {  
  8.         //公有成员  
  9.         init: function(){  
  10.              alert("init");  
  11.              alert(kiss);  
  12.         },  
  13.         //公有成员  
  14.         method: function(){  
  15.             alert("method");  
  16.         }  
  17.     };  
  18. };  

注:First 位于com.aptech 命名空间中,有一个私有成员kiss,并且向外部暴露了两个方法init()和method()。其实,在function和return之间定义的成员全总是private,而ruturn内部定义的成员全部是public
模拟继承

[javascript] view plain copy print ?
  1. //创建子类  
  2. com.aptech.Second = function(){  
  3. com.aptech.Second.superclass.constructor.apply(this);//调用父类构造方法  
  4. }  
  5. //com.aptech.Second子类继承自父类com.aptech.First  
  6. Ext.extend(com.aptech.Second, com.aptech.First, {  
  7. //新方法  
  8. fun: function(i){  
  9. return i * i * i;  
  10. },  
  11. //重写的方法  
  12. method: function(){  
  13. alert("Second::method")  
  14. }  
  15. });  
  16. //测试  
  17. var second = new com.aptech.Second();  
  18. alert(second.fun(5));  
  19. second.method();  

这个我没有太明白,不过不影响我继续学习,暂作记录

配置(config)选项

 

[javascript] view plain copy print ?
  1. Student = function(name, sex){  
  2. this.name = name;  
  3. this.sex = sex;  
  4. }  
  5. //测试  
  6. var student = new Student("李赞红""男");  
  7. alert("姓名:" + student.name + "\r\n性别:" + student.sex);  

apply()---config

[javascript] view plain copy print ?
  1. Student = function(config){  
  2. Ext.apply(this, config);  
  3. }  
  4. //测试  
  5. var student = new Student({name: "李赞红", sex: "男"});  
  6. alert("姓名:" + student.name + "\r\n性别:" + student.sex);  

注:Ext定义了一个名叫apply()的方法,作用是将第二个参数的成员赋给第一个参数。

Ext.apply()和Ext.applyIf()

 

[javascript] view plain copy print ?
  1. Student1 = function(config){  
  2. this.name = "张海军";  
  3. this.sex = "女";  
  4. Ext.apply(this, config);  
  5. }  
  6.   
  7. Student2 = function(config){  
  8. this.name = "张海军";  
  9. this.sex = "女";  
  10. Ext.applyIf(this, config);  
  11. }  
  12. var student1 = new Student1({name: "李赞红", sex: "男", birthday: new Date()});  
  13. alert("姓名1:" + student1.name + "\r\n 性别1:" + student1.sex + "\r\n 生日1:" +student1.birthday);  
  14.   
  15. var student2 = new Student2({name: "李赞红", sex: "男", birthday: new Date()});  
  16. alert("姓名2:" + student2.name + "\r\n 性别2:" + student2.sex + "\r\n 生日2:" +student2.birthday);  

 

结果:

 

姓名1:李赞红
性别1:男
生日1:Mon Apr 22 2013 11:32:14 GMT+0800

 

姓名2:张海军
性别2:女
生日2:Mon Apr 22 2013 11:33:14 GMT+0800

 

三、控件(和java有类似,理解基础上多动手,有印象即可,千万不要死记硬背)

 

简单的消息框

 

提示框的语法:
Ext.MessageBox. alert ( String title, String msg, Function fn, Object scope );
参数定义如下:
1、title:标题
2、msg:提示内容
3、fn:提示框关闭后自动调用的回调函数
4、scope:作用域,用于指定this指向哪里,一般不用管他,特殊情况下有用

 

例:

 

 

Ext.MessageBox.alert("提示框", "这是一个提示框", function(){
            alert("提示框关闭了");
            })

Ext.MessageBox.prompt("输入框", "请输入您的姓名:", function(btn, txt){
                Ext.MessageBox.alert("结果", "您点击了" + btn + "按钮,<br>输入的内容为" + txt);

});
Ext.MessageBox.prompt("输入框", "请输入您的姓名:", function(btn, txt){
            Ext.MessageBox.alert("结果", "您点击了" + btn + "按钮,<br>输入的内容为" +txt);
            }, this, 100);

 

    Ext.MessageBox.confirm("确认", "请点击下面的按钮作出选择", function(btn){
            Ext.MessageBox.alert("您单击的按钮是:" + btn);
            });

 

Ext.onReady 事件

 

[javascript] view plain copy print ?
  1. Ext.onReady(function(){  
  2.     Ext.get("btn").on("click"function(){  
  3.         Ext.MessageBox.alert("点击""我被点击了,非常高兴");  
  4.     });  
  5. });  

注:

页面加载完成后,Ext.onReady 事件被触发,基本上,除了类封装,与页面相关的操作都会写在该事件中。

Ext.get ( Mixed el):根据HTML标签的id属性获取Ext.Element 对象

on(String eventName, Function fn):为Ext.Element 对象定义一个事件,eventName是事件名称,和传统的事件名称相比不以“on”开头,fn为事件处理函数。从这里可以延伸开去,也可以是 “change”、“keypress”等。

 

EXT组件(暂时罗列,后期布局不用到处找)

组件有三种类型:基本组件、工具栏组件、表单组件。

基本组件

 

 

xtypeclass说明
boxExt.BoxComponent具有边框属性的组件
buttonExt.Button按钮
colorpaletteExt.ColorPalette调色板
componentExt.Component组件
containerExt.Container容器
cycleExt.CycleButton圆角按钮
dataviewExt.DataView数据显示视图
datepickerExt.DatePicker日期选择面板
editorExt.Editor编辑器
editorgridExt.grid.EditorGridPanel可编辑的表格
gridExt.grid.GridPanel不可编辑的表格
pagingExt.PagingToolbar分页组件
panelExt.Panel面板
progressExt.ProgressBar进度条
splitbuttonExt.SplitButton可分裂的按钮
tabpanelExt.TabPanel选项面板
treepanelExt.tree.TreePanel
viewportExt.ViewPort视图
windowExt.Window窗口

工具栏组件

 

xtypeclass说明
toolbarExt.Toolbar工具栏
tbbuttonExt.Toolbar.Button按钮
tbfillExt.Toolbar.Fill文件
tbitemExt.Toolbar.Item工具条项目
tbseparatorExt.Toolbar.Separator工具栏分隔符
tbspacerExt.Toolbar.Spacer工具栏空白
tbsplitExt.Toolbar.SplitButton工具栏分隔按钮
tbtextExt.Toolbar.TextItem工具栏文本项

表单组件

xtypeclass说明
formExt.FormPanelForm面板
checkboxExt.form.Checkbox复选框
comboExt.form.ComboBox下拉列表框
datefieldExt.form.DateField日期选择器
fieldExt.form.Field表单字段
fieldsetExt.form.FieldSet字段分组
hiddenExt.form.Hidden隐藏表单域
htmleditorExt.form.HtmlEditor在线HTML编辑器
numberfieldExt.form.NumberField数字编辑器
radioExt.form.Radio单选按钮
textareaExt.form.TextArea区域文本框

 

以下为阅读教程过程中摘录的几个控件:

 

日期选择器Ext.DatePicker

 

[javascript] view plain copy print ?
  1. <span style="font-size:12px;">var dp = new Ext.DatePicker({  
  2.             renderTo: Ext.getBody(),  
  3.             minDate: Date.parseDate("2009-1-1""Y-m-d"),  
  4.             maxDate: Date.parseDate("2999-12-30""Y-m-d"),  
  5.             value: Date.parseDate("2013-4-22""Y-m-d"),  
  6.             handler: function(){  
  7.             Ext.MessageBox.alert("日期", Ext.util.Format.date(this.getValue(), 'Y-m-d'));  
  8.             }  
  9.             });</span>  

下拉列表

[javascript] view plain copy print ?
  1. var cities = [ [ 1, "长沙市" ], [ 2, "株洲市" ], [ 3, "湘潭市" ],  
  2.                     [ 4, "邵阳市" ] ];  
  3.             var proxy = new Ext.data.MemoryProxy(cities);  
  4.             var City = Ext.data.Record.create([ {  
  5.                 name : "cid",  
  6.                 type : "int",  
  7.                 mapping : 0  
  8.             }, {  
  9.                 name : "cname",  
  10.                 type : "string",  
  11.                 mapping : 1  
  12.             } ]);  
  13.             var reader = new Ext.data.ArrayReader({}, City);  
  14.               
  15.             var store = new Ext.data.Store({  
  16.                 proxy : proxy,  
  17.                 reader : reader,  
  18.                 autoLoad : true  
  19.             //即时加载数据  
  20.             });  
  21.             //store.load();  
  22.             var combobox = new Ext.form.ComboBox({  
  23.                 renderTo : Ext.getBody(),  
  24.                 triggerAction : "all",  
  25.                 store : store,  
  26.                 displayField : "cname",  
  27.                 valueField : "cid",  
  28.                 mode : "local",  
  29.                 emptyText : "请选择湖南城市"  
  30.             });  
  31.             var btn = new Ext.Button({  
  32.                 text : "列表框的值",  
  33.                 renderTo : Ext.getBody(),  
  34.                 handler : function() {  
  35.                     Ext.Msg.alert("值""实际值:" + combobox.getValue()  
  36.                             + ";显示值:" + combobox.getRawValue());  
  37.                 }  
  38.             });  

1、Ext类 ………………………………… 2 2、Array类 …………………………… 4 3、Number类 …………………………… 4 4、String类 …………………………… 4 5、Date类 ……………………………… 5 6、Function类 ………………………… 6 7、Ext.Element类 ………………………… 7 8、Ext.DomQuery类 ………………… 13 9、Ext.DomHelper类 …………………… 14 10、Ext.Template类 …………………… 14 11、Ext.EventManager类 ……………… 15 12、Ext.EventObject类 ………………… 15 13、Ext.CompositeElement类 ………… 16 14、Ext.CompositeElementLite类 ……… 16 15、Ext.Fx类 …………………………… 16 16、Ext.KeyNav类 ……………………… 19 17、Ext.KeyMap类 …………………… 19 18、Ext.util.JSON类 ……………………… 20 19、Ext.util.Format类 ………………… 20 20、Ext.util.DelayedTask类 ……………… 20 21、Ext.util.TaskRunner类 …………… 21 22、Ext.util.TextMetrics类 …………… 21 23、Ext.XTemplate类 ………………… 21 24、Ext.data.Connection类 ……………… 22 25、Ext.Ajax类 ………………………… 22 26、Ext.data.Record类 ………………… 23 27、Ext.data.DataProxy类 …………… 24 28、Ext.data.HttpProxy类 …………… 24 29、Ext.data.MemoryProxy类 ……… 25 30、Ext.data.ScriptTagProxy类 ………… 25 31、Ext.data.DataReader类 ……………26 32、Ext.data.ArrayReader类 …………… 26 33、Ext.data.JsonReader类 …………… 26 34、Ext.data.XmlReader类 …………… 27 35、Ext.data.Store类 …………………… 28 36、Ext.data.GroupingStore类 ………… 32 37、Ext.data.SimpleStore类 ………… 34 38、Ext.data.Tree类 …………………… 34 39、Ext.data.Node类 ………………… 34 40、Ext.Action类 ……………………… 35 41、Ext.Button类 …………………… 36 42、Ext.SplitButton类 ……………… 38 43、Ext.CycleButton类 ……………… 39 44、Ext.form.BasicForm类 …………… 40 45、Ext.form.Field类 …………………… 41 46、Ext.form.Checkbox类 …………… 42 47、Ext.form.Radio类 ………………… 43 48、Ext.form.HtmlEditor类 …………… 43 49、Ext.form.TextField类 …………… 44 50、Ext.form.NumberField类 ………… 44 51、Ext.form.TextArea类 …………… 45 52、Ext.form.TriggerField类 ……… 45 53、Ext.form.DateField类 ………… 45 54、Ext.form.ComboBox类 ……………… 46 55、Ext.form.TimeField类 ………… 47 56、Ext.menu.Menu类 ………………… 50 57、Ext.menu.BaseItem类 …………… 50 58、Ext.menu.Adapter类 ……………… 51 59、Ext.menu.Item类 ………………… 51 60、Ext.menu.CheckItem类 …………… 51 61、Ext.menu.Separator类 ………… 52 62、Ext.menu.TextItem类 …………… 52 63、Ext.Toolbar类 …………………… 55 64、Ext.Toolbar.Item类 ……………… 56 65、Ext.Toolbar.Separator类 ……… 56 66、Ext.Toolbar.Spacer类 …………… 56 67、Ext.Toolbar.TextItem类 ……… 56 68、Ext.Toolbar.Fill类 ……………… 56 69、Ext.grid.ColumnModel类 ……… 58 70、Ext.grid.PropertyColumnModel类 … 59 71、Ext.grid.GridView类 …………… 59 72、Ext.grid.GroupingView类 ………… 60 73、Ext.grid.EditorGridPanel类 ……… 62 74、Ext.grid.PropertyGrid类 …………… 65
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值