新手指南--查看文章
 
第 8 章 哭泣吧!现在才开始讲基础问题。
发布时间:2008-3-6

8.1. Ext.get

 

ext里用来获得Element的一个函数,用途还算比较广,可以通过不少途径获得咱们需要的Element,而这个Element包括很多有趣的功能。

Element跟document.getElementById("myDiv")得到的dom对象是不一样的,虽然你还可以使用老方式获得指定 id的元素,但那样就失去了ext提供的各种常用操作,动画啦,定位啦,css啦,事件啦,拖拽啦。其实也不用担心,即便使用了Ext.get()获得了 myDiv,还是可以直接访问document.getElementById()应该得到的部分,而且挺简单的,Ext.get().dom就可以了。

下面让偶们来看看这些基本的功能会是咋样呢?

  1. 先获得一个Element

    var myDiv = Ext.get('myDiv');

    这里我们传入 的是一个id,你可以在html里看到<div id="myDiv"></div>,然后我们用Ext.get('myDiv')从html里取得这个div,然后封装成 Element对象,现在这个对象就已经放到缓存中了,以后再用的时候就更快撒。

  2. 最吸引眼球的是动画效果,所以我们先动两下。

    myDiv.hightlight();

    红色高亮,然后渐退。

    myDiv.addClass('red');

    添加自定义CSS类,css里有.red {background: red;}的定义,这样myDiv的背景直接变成了红色。

    myDiv.center();

    myDiv移动的窗口中间,包括垂直和竖直居中。

    myDiv.setOpacity(.25);

    使myDiv半透明

  3. 再看看怎么才好渐变动画

    myDiv.setWidth(100);

    这样可以直接设置myDiv的宽度,是没有渐变动画的。

    myDiv.setWidth(100, true);

    这样就打开了动画开关,如此简单就可以看到myDiv在动咯。

    咱们还可以控制动画的动作,如下

    myDiv.setWidth(100, {
    duration: 2,
    callback: this.highlight,
    scope: this
    });

    duration是间隔,数字越大移动越慢,callback说是动画完成后执行,但我没饰演出来,scope是callback执行的范围。

动画没法截图,还是看看lingo-sample/1.1.1/08-01.html,lingo-sample/2.0/08-01.html吧,四个按钮可以让myDiv在窗口里乱动,哈哈。

8.2. 要是我们想一下子获得一堆元素咋办?

 

现在像css那样的批量选择方式真的很流行,ext里也没有落伍,一定会赶这个潮流。

  1. 选择所有<P>元素

    现在我们要获得所有<P>元素,然后让他们都闪一下。

    Ext.select("p").highlight();
  2. 按照css的class选择

    首先我们有几个div,都使用class="red",然后我们让他们都闪一下,嘿嘿嘿~因为highlight()调用比较简单嘛。

    Ext.select("div.red").highlight();

这种方式在prototype和jquery里已经发扬光大,而且还光大得很呢,你只需要按照css的选择方式,就可以得到你需要的集合。这方面其 实jquery颇为神奇,把select用的真是出神入化,可叹,它对js封装太狠,你用jquery的时候完全感觉不到自己是在用 javascript,这样接触原生方法的机会很少,等于把自己绑定到jquery上,最后权衡利弊,只好忍痛割爱了。

批量选择,见lingo-sample/1.1.1/08-02.html和lingo-sample/2.0/08-02.html。

8.3. DomHelper和Template动态生成html

 

用dom生成html元素一直是头疼的事情,以前都是听springside的教导,使用jsTemplate和Scriptaculous的组合。现在到了ext里面,我们就来看看它自己的实现。

8.3.1. DomHelper用来生成小片段

 

使用DomHelper非常灵活,超简单就可以生成各种html片段,遇到复杂情况也要求助于它。

大概就是这么用

var list = Ext.DomHelper.append('parent', {tag: 'div', cls: 'red'});

它就是向id=parent这个元素里,添加一个div元素。

按照文档里讲的,第二个参数{}里,除了四个特殊属性以外都会复制给新生成元素的属性,这四个特殊属性是

  1. tag,告诉我们要生成一个什么标签,div啦,span啦,诸如此类。

    千万别告诉我到现在你还不知道这些html标签,中间告诉你多少次先去学学html和css啦?你飞过来的不成?

  2. cls,指的是<div class="red"></div>这种标签中的class属性,因为class是关键字,正常情况下应该写成className,可jack说className太长了,最后就变成cls了。-_-。

    他就喜欢玩这个,把dataStore写成ds,DomHelper写成dh,Element写成el,ColumnModel写成cm,SelectionModel是sm。唉,发明的专业名词缩写好多呀。

  3. children,用来指定子节点,它的值是一个数组,里边包含了更多节点。

  4. html,对应innerHTML,觉得用children描述太烦琐,直接告诉节点里边的html内容也是一样。

DomHelper除了append还有几个方法,指定将新节点添加到什么位置。

为了比对效果,先放一个初始页面。

原始的html是这样的。一个div下有4个节点,其中第三个子节点下还有自己的子节点。

<div id="parent" style="border: 1px solid black;padding: 5px;margin: 5px;background: lightgray;">
<p id="child1">child1</p>
<p id="child2">child2</p>
<div id="child3">
<p id="child5">inner child</p>
</div>
<p id="child3">child4</p>
</div>
  1. append是将新节点放到指定节点的最后。

    Ext.DomHelper.append('parent', {tag: 'p', cls: 'red', html: 'append child'});
  2. insertBefore,新节点插入到指定节点前面。

    Ext.DomHelper.insertBefore('parent', {tag: 'p', cls: 'red', html: 'insert before child'})
  3. insertAfter,新节点插入到指定节点后面。

    Ext.DomHelper.insertAfter('parent', {tag: 'p', cls: 'red', html: 'insert before child'})
  4. overwrite,会替换指定节点的innerHTML内容。

    Ext.DomHelper.overwrite('child3', {tag: 'p', cls: 'red', html: 'overwrite child'

    [1] [2] 下一页



     [新手指南]EXT开发的oa界面赏析 (佚名,03-06)
    [ [ [ [ [ [ [ [ [       ……

     [新手指南][组图]Ext入门学习系列五--表格控件 (myext,12-07)
    上节学习了Ext面板控件,为后面的各个控件学习奠定基础,在此基础上本章将学习网络开发最期待的功能——表格控件。 我们都知道网络编程语言中,除了.net其他的基本没有提供网格控件,而最近的asp.net mvc也不倡议使用传统的服务器控件,绑定数据需要自己拼表格,所以兼容各种语言的表格控件就变得流行起……

     [新手指南]阅读Ext学习Js(一)Core/Ext.js (佚名,03-06)
    从Library的角度去看,Ext(喜欢中文的朋友可以到它的中文站看看)和Prototype JQuery YUI没有太大区别,但它有它的优点,完整的OO支持、成熟的通用widgets并支持主题、良好的扩展性、快速的更新发布新的widgates、社区也很热闹。最重要的是我……

     [新手指南]架构分析(1)理解Ext.util.Event (佚名,03-06)
      由于Ext2.0中所有的组件都是由Observable继承而来,理解Ext就需要先从Ext.util.Observable说起,而 Observable是对Event对象进行管理,从而理解Observable必须首先从Ext.util.Event说起。  ……

     [新手指南]调试利器:Firebug使用详解 (佚名,03-06)
    Javascript的调试,是开发Web应用尤其是AJAX应用很重要的一环,目前对Javascript进行调试的工具很多,我比较喜欢使用的是Firebug。Firebug是Joe Hewitt开发的一套与Firefox集成在一起的功能强大的web开发工具,可以实时编辑、调试和监测任何页面的CSS、H……

 


©2008 MyExt.cn
本站文章来自互联网,仅供学习和研究使用,如有版权问题,请发送Email:myext@126.com.