您好,欢迎访问三七文档
1、Ext简介我们将讲讲怎么使用Ext,来完成一些JavaScript常见的任务。如果你想自己试试,就应该先下IntroToExt2.zip,用来构建已下面的Ext代码。Zip包里有三个文件:ExtStart.html,ExtStart.js和ExtStart.css。解包这三个文件到Ext的安装目录中(例如,Ext是在“C:\code\Ext\v2.0”中,那应该在v2.0里面新建目录“tutorial”。双击ExtStart.htm,接着你的浏览器打开启动页面,应该会有一条消息告诉你配置已完毕。如果出现了Javascript错误,请按照页面上的指引操作。现在在你常用的IDE中或文本编辑器中,打开ExtStart.js看看。Ext.onReady(function(){alert(Congratulations!YouhaveExtconfiguredcorrectly!);});Ext.onReady可能是你接触的第一个也可能是在每个页面都要使用的方法。这个方法会在DOM加载全部完毕后,保证页面内的所有元素能被Script引用(reference)之后调用。你可删除alert()那行。
2、,加入一些实际用途的代码试试。Element:Ext的核心大多数的JavaScript操作都需要先获取页面上的某个元素的引用(reference),好让你来做些实质性的事情。传统的JavaScript做法,是通过ID获取Dom节点的:varmyDiv=document.getElementById('myDiv');这毫无问题,不过这样单单返回一个对象(DOM节点),用起来并不是太实用和方便。为了要用那节点干点事情,你还将要手工编写不少的代码;另外,对于不同类型浏览器之间的差异,要处理起来可真头大了。进入Ext.element对象。元素(element)的的确确是Ext的心脏地带,--无论是访问元素(elements)还是完成一些其他动作,都要涉及它。Element的API是整个Ext库的基础,如果你时间不多,只是想了解Ext中的一两个类的话,Element一定是首选!由ID获取一个ExtElement如下(首页ExtStart.htm包含一个div,ID名字为“myDiv”,然后,在ExtStart.js中加入下列语句):ThecorrespondingcodetogetanExtE。
3、lementbyIDlookslikethis(thestarterpageExtStart.htmlcontainsadivwiththeidmyDiv,sogoaheadandaddthiscodetoExtStart.js):Ext.onReady(function(){varmyDiv=Ext.get('myDiv');});再回头看看Element对象,发现什么有趣的东东呢?·Element包含了常见的DOM方法和属性,提供一个快捷的、统一的、跨浏览器的接口(若使用Element.dom的话,就可以直接访问底层DOM的节点。);·Element.get()方法提供内置缓存(Cache),多次访问同一对象效率上有极大优势;·内置常用的DOM节点的动作,并且是跨浏览器的定位的位置、大小、动画、拖放等等(add/removeCSSclasses,add/removeeventhandlers,positioning,sizing,animation,drag/drop)。这意味着你可用少量的代码来做各种各样的事情,这里仅仅是一个简单的例子(完整的列表在ElementAPI文档中)。。
4、继续在ExtStart.js中,在刚才我们获取好myDiv的位置中加入:myDiv.highlight();//黄色高亮显示然后渐退myDiv.addClass('red');//添加自定义CSS类(在ExtStart.css定义)myDiv.center();//在视图中将元素居中myDiv.setOpacity(.25);//使元素半透明获取多个DOM的节点通常情况下,想获取多个DOM的节点,难以依靠ID的方式来获取。有可能因为没设置ID,或者你不知道ID,又或者直接用ID方式引用有太多元素了。这种情况下,你就会不用ID来作为获取元素的依据,可能会用属性(attribute)或CSSClassname代替。基于以上的原因,Ext引入了一个异常强大的DomSelector库,叫做DomQuery。DomQuery可作为单独的库使用,但常用于Ext,你可以在上下文环境中(Context)获取多个元素,然后通过Element接口调用。令人欣喜的是,Element对象本身便有Element.selcect的方法来实现查询,即内部调用DomQuery选取元素。这个简单的例子中,ExtStar。
5、t.htm包含若干段落(标签),没有一个是有ID的,而你想轻松地通过一次操作马上获取每一段,全体执行它们的动作,可以这样做://每段高亮显示Ext.select('p').highlight();Element.select在这个例子中的方便性显露无疑。它返回一个复合元素,能通过元素接口(Elementinterface)访问每个元素。这样做的好处是可不用循环和不分别访问每一个元素。DomQuery的选取参数可以是一段较长的数组,其中包括W3CCSS3Dom选取器、基本XPatch、HTML属性和更多,请参阅DomQueryAPI文档以了解这功能强大的库个中细节。响应事件到这范例为止,我们所写的代码都是放在onReady中,即当页面加载后总会立即执行,功能较单一——这样的话,你便知道,如何响应某个动作或事件来执行你希望做的事情,做法是,先分配一个function,再定义一个eventhandler事件处理器来响应。我们由这个简单的范例开始,打开ExtStart.js,编辑下列的代码:Ext.onReady(function(){Ext.get('myButton').on('click。
6、',function(){alert(你单击了按钮);});});代码依然会加载好页面后执行,不过重要的区别是,包含alert()的function是已定义好的,但它不会立即地被执行,是分配到按钮的单击事件中。用浅显的文字解释,就是:获取ID为'myDottom'元素的引用,监听任何发生这个元素上被单击的情况,并分配一个function,以准备任何单击元素的情况。一般来说,Element.select也能做同样的事情,即作用在获取一组元素上。下一例中,演示了页面中的某一段落被单击后,便有弹出窗口:Ext.onReady(function(){Ext.select('p').on('click',function(){alert(你单击一段落;);});});这两个例子中,事件处理的function均是简单几句,没有函数的名称,这种类型函数称为“匿名函数(anonymousfunction)”,即是没有名的的函数。你也可以分配一个有名字的eventhandler,这对于代码的重用或多个事件很有用。下一例等效于上一例:Ext.onReady(function(){varparagraphC。
7、licked=function(){alert(Youclickedaparagraph);}Ext.select('p').on('click',paragraphClicked);});到目前为止,我们已经知道如何执行某个动作。但当事件触发时,我们如何得知这个eventhandler执行时是作用在哪一个特定的元素上呢?要明确这一点非常简单,Element.on方法传入到evenhandler的function中(我们这里先讨论第一个参数,不过你应该浏览API文档以了解evenhandler更多的细节)。在我们之前的例子中,function是忽略这些参数的,到这里可有少许的改变,——我们在功能上提供了更深层次的控制。必须先说明的是,这实际上是Ext的事件对象(eventobject),一个跨浏览器和拥有更多控制的事件的对象。例如,可以用下列的语句,得到这个事件响应所在的DOM节点:Ext.onReady(function(){varparagraphClicked=function(e){Ext.get(e.target).highlight();}Ext.select('p').o。
8、n('click',paragraphClicked);});注意得到的e.target是DOM节点,所以我们首先将其转换成为EXT的Elemnet元素,然后执行欲完成的事件,这个例子中,我们看见段落是高亮显示的。使用Widgets(Widget原意为“小器件”,现指页面中UI控件)除了我们已经讨论过的核心JavaScript库,当前的Ext亦包括了一系列的最前端的JavaScirptUI组件库。文本以一些常用的widget为例子,作简单的介绍。MessageBox比起略为沉闷的“HelloWolrd”消息窗口,我们做少许变化,前面我们写的代码是,单击某个段落便会高亮显示,现在是单击段落,在消息窗口中显示段落内容出来。在上面的paragraphClicked的function中,将这行代码:Ext.get(e.target).highlight();替换为:varparagraph=Ext.get(e.target);paragraph.highlight();Ext.MessageBox.show({title:'ParagraphClicked',msg:paragraph.dom。
9、.innerHTML,width:400,buttons:Ext.MessageBox.OK,animEl:paragraph});这里有些新的概念需要讨论一下。在第一行中我们创建了一个局部变量(LocalVariable)来保存某个元素的引用,即被单击的那个DOM节点(本例中,DOM节点指的是段落paragrah,事因我们已经定义该事件与标签发生关联的了)。为什么要这样做呢?嗯...观察上面的代码,我们需要引用同一元素来高亮显示,在MessageBox中也是引用同一元素作为参数使用。一般来说,多次重复使用同一值(Value)或对象,是一个不好的方式,所以,作为一个具备良好OO思维的开发者,应该是将其分配到一个局部变量中,反复使用这变量!现在,为了我们接下来阐述新概念的演示,请观察MessageBox的调用。乍一看,这像一连串的参数传入到方法中,但仔细看,这是一个非常特别的语法。实际上,传入到MessageBox.show的只有一个参数:一个Objectliteral,包含一组属性和属性值。在Javascript中,ObjectLiteral是动态的,你可在任何时候用{和}创建一个典型。
10、的对象(object)。其中的字符由一系列的name/value组成的属性,属性的格式是[propertyname]:[propertyvalue]。在整个Ext中,你将会经常遇到这种语法,因此你应该马上消化并吸收这个知识点!使用ObjectLiteral的原因是什么呢?主要的原因是“可伸缩性(flexibility)”的考虑,随时可新增、删除属性,亦可不管顺序地插入。而方法不需要改变。这也是多个参数的情况下,为最终开发者带来不少的方便(本例中的MessageBox.show())。例如,我们说这儿的foo.action方法,有四个参数,而只有一个是你必须传入的。本例中,你想像中的代码可能会是这样的foo.action(null,null,null,'hello').,若果那方法用ObjectLiteral来写,却是这样,foo.action({param4:'hello'}),这更易用和易读。GridGrid是Ext中人们最想先睹为快的和最为流行Widgets之一。好,让我们看看怎么轻松地创建一个Grid并运行。用下列代码替换ExtStart.js中全部语句:Ext.onReady(f。
本文标题:EXT(js)教程
链接地址:https://www.777doc.com/doc-3611204 .html