要学习及应用好 Ext 框架,必须需要理解Html DOM、Ext Element及Component三者之间的区别。
每一个 HTML 页面都有一个层次分明的 DOM 树模型,浏览器中的所有内容都有相应的 DOM 对象,动态改变页面的内容,正是通过使用脚本语言来操作 DOM 对象实现。(通常使用 getElementById/Ext.getDOM 获得 DOM 对象)
仅仅有 DOM 是不够的,比如要把页面中的某一个节点移到其它位置,要给某一个节点添加阴影效果,要隐藏或显示某一个节点等,我们都需要通过几句 javascript 才能完成。因此,Ext 在 DOM 的基础上,创建了 Ext Element,可以使用 Element 来包装任何 DOM,Element 对象中添加了一系列快捷、简便的实用方法。(通常使用 Ext.get 获得 Element 对象)
对于终端用户来说,仅仅有 Element 是不够的,比如用户要显示一个表格、要显示一棵树、要显示一个弹出窗口等。因此,除了 Element 以 外,Ext 还建立了一系列的客户端界面组件 Component,我们在编程时,只要使用这些组件 Componet 即可实现相关数据展示及交互等,而 Component 是较高层次的抽象,每一个组件在渲染 render 的时候,都会依次通过 Element、DOM 来生成最终的页面效果。(通常使用 Ext.getCmp 获得 Component 对象)
Ext 中 getDom、get、getCmp 的区别
getDom 方法能够得到文档中的 DOM 节点,该方法中包含一个参数,该参数可以是 DOM 节点的 id、DOM 节点对象或 DOM 节点对应的 Ext 元素(Element)等。 (与 getElementById 是一个效果)
- Ext.onReady(function()
- {var e=new Ext.Element(“hello”);
- Ext.getDom(“hello”);
- Ext.getDom(e);
- Ext.getDom(e.dom);
- });
//Html 页面中包含一个 id 为 hello 的 div,代码如下:<div id=”hello”>aaa</div>?
在上面的代码中,Ext.getDom(“hello”)、Ext.getDom(e)、Ext.getDom(e.dom)等三个语句返回都是同一个 DOM 节点对象。?
get 方法中只有一个参数,这个参数是混合参数,可以是 DOM 节点的 id、也可以是一个 Element、或者是一个 DOM 节点对象等。 get 方法其实是 Ext.Element.get 的简写形式。?
- Ext.onReady(function(){
- var e=new Ext.Element(“hello”);?
- Ext.get(“hello”));
- Ext.get(document.getElementById(“hello”));
- Ext.get(e);
- });
//Html 页面中包含一个 id 为 hello 的 div,代码如下:<div id=”hello”>aaa</div>?
Ext.get(“hello”)、Ext.get(document.getElementById(“hello”))、Ext.get(e)等三个方法都可以得到一个与 DOM 节点 hello 对应的 Ext 元素。
getCmp 方法用来获得一个 Ext 组件,也就是一个已经在页面中初始化了的 Component 或其子类的对象,getCmp 方法中只有一个参数,也就是组件的 id。 getCmp 方法其实是 Ext.ComponentMgr.get 方法的简写形式。