欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Ext入门学习精品资料.docx

    • 资源ID:96697517       资源大小:73.99KB        全文页数:59页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Ext入门学习精品资料.docx

    Ext入门学习一:Ext是什么ExtJS是一个javascript框架,用于在客户端创建丰富多彩的web应用程序界面。ExtJS可以用来开发RIA也即富客户端的AJAX应用。ExtJs最开始基于YUI技术,由开发人员Jack Slocum开发,通过参考Java Swing等机制来组织可视化组件。 二:Ext能干什么主要是用来制作富客户端的Web应用。包括但不限于:(1)   可以动态创建web组件,动态维护web的Dom对象(2)   灵活地获取界面组件对象,方便对对象的操作和控制(3)   大量的组件对象帮助构建复杂的web应用(4)   友好的Ajax支持(5)   完善的事件处理机制 三:Ext有什么 四:Ext的HelloWorld1:环境准备(1)到官网上下载最新的版本,目前是ext-3.3-beta(2)下载后解压后,看看里面的包结构:adapter:负责将里面提供的第三方底层库(包括Ext自带的底层库)映射为Ext所支持的底层库。build:  压缩后的ext全部源码(里面分类存放)。   docs:  API帮助文档。   exmaples:提供使用ExtJs技术做出的小实例。   resources:Ext UI资源文件目录,如CSS、图片文件都存放在这里面。   package:按包分类的源码source: 无压缩Ext全部的源码(里面分类存放) 遵从Lesser GNU (LGPL) 开源的协议。   Ext-all.js:压缩后的Ext全部源码。   ext-all-debug.js:无压缩的Ext全部的源码(用于调试)。 ext-core.js:压缩后的Ext的核心组件,包括sources/core下的所有类。 ext-core-debug.js:无压缩Ext的核心组件,包括sources/core下的所有类。(3)开发的时候只需要把resources包中的css和images放到common下面,还有把ext-all.js和adapter/ext/ext-base.js放入到js中就可以了 2:HelloWorld.html<html><head><title></title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <link rel="stylesheet" type="text/css" href="/ext3test/common/css/ext-all.css" /><script type="text/javascript" src="/ext3test/common/js/ext-base.js"></script><script type="text/javascript" src="/ext3test/common/js/ext-all.js"></script> </head> <script language="javascript">Ext.onReady(function()       alert("Hello Ext3.0,你好"););    </script> 五:Ext的面向对象简介/相当于Java的packageExt.namespace("Ext.cc");/完全使用Ext的创建对象语法太繁琐,还是用我们熟悉的js的语法来写Ext.cc.Class1=function()    this.aa = "cc"        this.t1=function()        this.aa="t1"    ;Ext.cc.Class2=function()    this.t1=function()        this.aa="cc2 tt2"    ;/表示Class2继承Class1,这里面没有采用Ext的extendsExt.cc.Class2.prototype=new Ext.cc.Class1();/或者使用这个Ext提供的语法/Ext.extend(Ext.cc.Class2,Ext.cc.Class1);/这个是Ext可以给一个对象动态的追加属性和方法  Ext.apply(Ext.cc.Class1.prototype,bb:"bb",cc:"cc",dd:function()alert("ddd");六:如何获取界面上的元素Ext的选择器1:Ext.Element:Ext的核心对象,是Ext的基础。Element包含了常见的DOM方法和属性,提供一个快捷的、统一的、跨浏览器的接口(若使用Element.dom的话,就可以直接访问底层DOM的节点。);  2:Ext.get(要获取对象的id)Element.get()方法提供内置缓存(Cache),多次访问同一对象效率上有极大优势; 内置常用的DOM节点的动作,并且是跨浏览器的定位的位置、大小、动画、拖放等等(添加/移除 CSS 类, 添加/移除事件处理程序, 定位, 改变大小, 动画, 拖放)。  3:获取多个元素DomQuery(1)元素选择符selector:Ext.query(元素类型名称如:”div”);Ext.query(第一个参数元素类型名称,第二个参数是#元素的id);Ext.query(#元素的id);Ext.query(.元素的class);Ext.query(*号返回所有的元素);Ext.query("div input")/获取div下的子元素(2)属性选择符Ext.query("*class")/获取所有有class属性的元素Ext.query("*class=hello )"/获取所有class=hello的元素Ext.query("*class!=hello" )/ 获取所有class不等于hello的元素Ext.query("*class=h" )/ 获取所有以h开头的元素Ext.query("*class$=h" )/ 获取所有以h结尾的元素Ext.query("*class*=hello" )/ 获取所有包含hello的元素(3)CSS值元素选择符语法格式:元素CSS的属性  操作符   值Ext.query("*color=red")/获取Css属性中color为red的元素操作符同样可以是:!=,$,*等(4)伪类选择符Ext.query("span:first-child"); / SPAN元素为, 其父元素的第一个子元素Ext.query("a:last-child") /A元素为其父元素的最后一个子元素Ext.query("span:nth-child(2)") /SPAN元素为其父元素的第2个子元素(由1开始的个数)Ext.query("tr:nth-child(odd)") /TR元素为其父元素的奇数个数的子元素Ext.query("li:nth-child(even)") /LI元素为其父元素的偶数个数的子元素Ext.query("a:only-child") /返回A元素,A元素为其父元素的唯一子元素Ext.query("input:checked") /返回所有选中的(checked)的INPUT元素Ext.query("tr:first") /返回第一个的TR元素Ext.query("input:last") /返回最后一个的INPUT元素Ext.query("td:nth(2)") /返回第二个的TD元素Ext.query("div:contains(within)") /返回每一个包含“within”字符串的DIVExt.query("div:not(form)") /返回没有包含FORM子元素以外的那些DIVExt.query("div:has(a)") /返回包含有A元素的那些DIV集合Ext.query("td:next(td)") /返回接着会继续有TD的那些TD集合。尤其一个地方是,如果使用了colspan属性的TD便会忽略Ext.query("label:prev(input)")/返回居前于INPUT元素的那些LABEL元素集合  Ext.query和Ext.select的作用同是根据CSS选择符,基本的XPath,HTML属性等查找出一个或多个元素。区别在于返回类型上。分别是:query方法返回的是JavaScript标准的数组类型;select方法返回的是CompositeElement类型,试比较七:响应事件Ext.get("btn_add").on("click",function()alert("哈哈,点击了"););添加事件方式跟JQuery类似。 如何得知这个event handler执行时是作用在哪一个特定的元素上呢?自动传入event:Ext.get("btn_add").on("click",function(e)alert("哈哈,点击了="+e.target.value);); 八:数据操作Store、Record、Reader等Store是在Js端的小型内存数据中心,js组件从store里面取值Record是记录,主要就是描述store里面每一条值,基本是key-valueReader是解析器,就是从原始数据读成需要的对象。 比如:var sexStore = new Ext.data.JsonStore(                url: "a.jsp",                fields:                     'sexTrue', 'sexShow'                ,                listeners:                     'load': function() alert("now load");                             );            sexStore.load();     后台返回的值:<% page contentType="text/html; charset=gb2312" %><%        out.println("sexTrue:'1',sexShow:'男人',sexTrue:'2',sexShow:'女人'"); %> 九:使用组件Widgets1:Ext.Button(1)/初始化var btn_add = new Ext.Button(       /设置属性        text:"新增",      /显示出来        renderTo:Ext.getBody(); (2)/显示按钮的属性,要注意这个text和上面的text在Ext里面不同,上面那个是Config,用在构造对象的时候,这个是属性,用来取值用alert(btn_add.text); (3)添加事件:    var btn_add = new Ext.Button(        text:"新增",        renderTo:Ext.getBody(),       handler:function()           alert("哈哈,点击我");                     ); handler :用于处理默认的事件,button就是click 还有一种跟swing一样的机制,listeners:    var btn_add = new Ext.Button(        text:"新增",        renderTo:Ext.getBody(),        handler:function()            alert("哈哈,点击我");                  ,        listeners:            "click":function()                alert("now is click11");            ,            "click":function()                alert("now is click22");            ,            "afterrender":function()                alert("afterrender");                        );A:可以在listeners里面添加很多事件注册B:相同的事件,后面的覆盖掉前面的,但不影响handler的触发 还有一种写法:    var btn_add = new Ext.Button(        text:"新增",        minWidth:100,        renderTo:Ext.getBody(),        handler:function()            alert("哈哈,点击我");                  ,        listeners:            "click":function()                alert("now is click11");            ,            "click":function()                alert("now is click22");            ,            "afterrender":function()                alert("afterrender");                        );        btn_add.on("click",function()alert("now is click333"););    btn_add.on("click",function()alert("now is click444");); A:可以添加很多个,相同的也没有关系,都会运行,形成一个事件链B:可以和handler、listeners共存 2:Ext.form.TextFieldExt.onReady(function()    var btn_add = new Ext.Button(        text:"新增",        renderTo:Ext.getBody()    );    btn_add.on("click",function()                alert("now is click444="+userId.getValue();                                                                 );        var userId = new Ext.form.TextField(        fieldLabel:"用户编号",          renderTo:Ext.getBody()    );); A:会发现:虽然出现了文本框,而且可以操作,点击按钮也能取得文本框的值,但是前面的标签并没有出来,原因是没有使用布局,layout。这里应该使用Ext.layout.FormLayout,布局的宿主对象必须是Ext.Container或者其子类。 B:只要在构造对象的时候,在宿主对象上指定layout:”form”就好了。 C:Ext.Container的子类主要有:Panel, Toolbar, Viewport, Menu 所以修改成如下: Ext.onReady(function()    var btn_add = new Ext.Button(        text:"新增"    );    btn_add.on("click",function()                                            alert("now is click444="+userId.getValue();                                            userId.setValue("updateddd");                                                                 );        var userId = new Ext.form.TextField(        fieldLabel:"用户编号",        id:"userId"         );        var addPanel = new Ext.Panel(       renderTo:Ext.getBody(),       layout:"form",       labelWidth:70,       listeners:           "render":function(addPanel)                  addPanel.add(userId);                  addPanel.add(btn_add);                            ););  A:跟swing中一样,用panel来组织页面,其他组件就不需要renderto了B:取值赋值使用getValue和setValue 3:Ext.panel完全模拟Swing中的写法Ext.onReady(function()  /定义组件    var btn_add = new Ext.Button(       /设置属性        text:"新增"    );  /设置事件    btn_add.on("click",function()                                            alert("now is click444="+Ext.get("userId").getValue();                                            userId.setValue("updateddd");                                                                 );    /定义组件    var userId = new Ext.form.TextField(        fieldLabel:"用户编号",        id:"userId"         );    /定义面板    var addPanel = new Ext.Panel(        layout:"form",        width:300,        height:400,        labelWidth:70    );       /把组件放到panel里面    addPanel.add(userId);    addPanel.add(btn_add);    /把panel放到body里面显示出来    addPanel.render(Ext.getBody(););   A:也可以使用xtype的特性来简化代码,如下:    addPanel.add(xtype:"textfield",fieldLabel:"用户名称"); B:Ext为了简化代码,使下载量变小,提供了items和buttons,如下:Ext.onReady(function()    var addPanel = new Ext.Panel(        layout:"form",        width:300,        height:400,        labelWidth:70,        title:"用户新增界面",        renderTo:Ext.getBody(),                items:                            xtype:"textfield",                fieldLabel:"用户编号",                id:"userId"            ,                            xtype:"textfield",                fieldLabel:"用户姓名",                id:"userName"                       ,        buttons:                            xtype:"button",                text:"新增",                listeners:                    "click":function()                        alert("now add="+Ext.get("userId").getValue();                                                ,                            xtype:"button",                text:"取消"                        ); );    常见布局所谓布局就是指容器组件中子元素的分布、排列组合方式。Ext的所有容器组件都支持而局操作,每一个容器都会有一个对应的布局,布局负责管理容器组件中子元素的排列、组合及渲染方式等。         ExtJS的布局基类为Ext.layout.ContainerLayout,其它布局都是继承该类。Ext中的一些容器组件都已经指定所使用的布局,比如TabPanel使用card布局、FormPanel使用form布局,GridPanel中的表格使用column布局等,我们在使用这些组件的时候,不能给这些容器组件再指定另外的布局。         常用的布局有border、column、form、card、table等布局。 Form布局前面已经用了Column布局用来实现左右分的,也就是实现一行排多个,如下示例:Ext.onReady(function()    var addPanel = new Ext.Panel(          layout:"form",        width:600,        height:400,        labelWidth:70,        title:"用户新增界面",        renderTo:Ext.getBody(),                items:                                           layout:"column",                                items:                                                         columnWidth:.5,                        layout:"form",                        items:                                                            xtype:"textfield",                                fieldLabel:"用户编号",                                id:"userId"                            ,                                                            xtype:"textfield",                                fieldLabel:"用户姓名",                                id:"userName"                                                                                                ,                                            columnWidth:.5,                        layout:"form",                        items:                                                            xtype:"textfield",                                fieldLabel:"用户年龄",                                id:"userAge"                            ,                                                            xtype:"textfield",                                fieldLabel:"用户性别",                                id:"sex"                                                                                                                                    ,        buttons:                            xtype:"button",                text:"新增",                listeners:                    "click":function()                        alert("now login="+Ext.get("userId").getValue();                                                ,                            xtype:"button",                text:"取消"                        ); );     Border布局Border布局由类Ext.layout.BorderLayout定义,布局名称为border。该布局把容器分成东南西北中五个区域,分别由east,south, west,north, center来表示,在往容器中添加子元素的时候,我们只需要指定这些子元素所在的位置,Border布局会自动把子元素放到布局指定的位置。看下面的代码:Ext.onReady(function()       new Ext.Viewport(           layout:"border",           items:                            region:"north",                   height:50,                   title:"顶部面板"            ,                               region:"south",                   height:50,                   title:"底部面板"            ,                               region:"center",                   title:"中央面板"            ,                               region:"west",                   width:100,                   title:"左边面板"            ,                               region:"east",                   width:100,                   title:"右边面板"                              );   ); Accordion布局(可折叠布局)Ext.onReady(function()       new Ext.Panel(           renderTo:"hello",           title:"容器组件",           width:500,           height:200,           layout:"accordion",           layoutConfig:                animate: true           ,           items:                            title:"子元素1",                html:"这是子元素1中的内容"            ,                               title:"子元素2",                html:"这是子元素2中的内容"            ,                               title:"子元素3",                html:"这是子元素3中的内容"                              );   ); Card布局Ext.onReady(function()       var panel=new Ext.Panel(           renderTo:"hello",           title:"容器组件",           width:500,           height:200,           layout:"card",           activeItem: 0,           layoutConfig:                animate: true           ,           items:                            title:"子元素1",                html:"这是子元素1中的内容"            ,                               title:"子元素2",                html:"这是子元素2中的内容"            ,                               title:"子元素3",                html:"这是子元素3中的内容"                    ,           buttons:                            text:"切换",handler:changeTab                           );           var i=1;       function changeTab()           panel.getLayout().setActiveItem(i+);           if(i>2)            i=0;                 );Table布局Ext.onReady(function()    var panel=new Ext.Panel(        renderTo:"hello",        title:"容器组件",

    注意事项

    本文(Ext入门学习精品资料.docx)为本站会员(封****n)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开