2、ExtJS的Heart—Ext.Element
Ext.Element和Ext.Observable是ExtJS的核心:Ext.Element是构建ExtJS组件的基础,而Ext.Observable是ExtJS事件管理的基础。
2.1、如何理解Ext.Element
不管ExtJS的功能多么强,做出的页面多么美观、专业,ExtJS的所有组件最终都是通过HTML和CSS来实现的,因此,HTML DOM的Element类在ExtJS中同样起着非常重要的作用。但是,由于HTML DOM的Element类的功能相对比较简单,ExtJS对HTML DOM的Element类进行了包装和扩展,形成了ExtJS自己的Ext.Element类。
Ext.Element是基于ExtJS的页面的重要的、最基本的组成部分。可以说,Ext.Element是ExtJS的heart:所有漂亮的组件,像Ext.Button、Ext.Window等,虽然这些组件的祖先类是Ext.Component,但是,归根到底,这些组件,同时也包括Ext.Component,它们都是由具有一定层次结构的Ext.Element对象构建而成的,也就是说,一个Component是由一组具有一定层次结构的Ext.Element对象构成的。证据:在Ext.Component类中有一个e1属性,在ExtJS的API文档中是这样说的:
el : Ext.Element
The Ext.Element which encapsulates this
Component. Read-only.
这就是说,这个el属性就指向用于构建这个Component组件的根Element!(当然,为了构建出像Ext.Button这样美观的组件,这个el一定有许多child Elements)。
由于Ext.Element是对HTML的DOM的Element的包装和扩展,因此,从Ext.Element中可以得到HTML的DOM的Element:通过dom属性即可。
通常情况下,通过语句:
Ext.get(“id”);
即可获得某个DOM元素的Ext.Element对象,之后,可以在所获得的对象上进行多种操作,包括:appendxxx、insertxxxx、createxxx、load等,可以在Ext.Element对象上监听并处理发生在该对象上的浏览器事件,还有,可以在某个Ext.Element对象执行Ext.Fx中定义的所有动画效果操作。
2.2、Ext.Template及Ext.XTemplate模板应用
换一个话题,介绍一下Ext.Template及Ext.XTemplate的应用。
2.2.1、Ext.Template
Ext.Template,顾名思义,模板,它是一个很有用的类。下面是一个典型的Ext.Template应用例子:
var myTpl = new Ext.Template("<div>Hello {0}.</div>"); //定义了一个模板
myTpl.append(document.body, ['Marjan']); //可以多次应用模板
myTpl.append(document.body, ['Michael']);
myTpl.append(document.body, ['Sebastian']);
执行这段代码,将产生如下的DOM:
这段代码:首先创建一个模板,在这个模板中有一个占位参数 {0},由于是使用数字占位参数,所以在应用该模板时,将从实际数组参数中获得数组的第一个元素来替换{0}的值。这也是为什么在应用模板时,我们使用数组最为实际参数。
我们也可以使用对象来传递值,这时,需要在模板中使用
{对象属性名} 的形式来占位,例如:
var myTpl = new Ext.Template(
'<div style="background-color: {color}; margin: 10;">',
'<b> Name :</b> {name}<br />',
'<b> Age :</b> {age}<br />',
'<b> DOB :</b> {dob}<br />',
'</div>'
);
myTpl.compile();
myTpl.append(document.body,{
color : "#E9E9FF",
name : 'John Smith',
age : 20,
dob : '10/20/89'
});
myTpl.append(document.body,{
color : "#FFE9E9",
name : 'Naomi White',
age : 25,
dob : '03/17/84'
});
执行这段代码,结果如下图所示:
2.2.2、Ext.XTemplate
Ext.Template只能作用于单个对象,当要同时作用于对象数组中的每个对象时,这就是Ext.XTemplate的用武之地:因为Ext.XTemplate提供loop功能。看一个例子就知道如何使用Ext.XTemplate了:
var tplData = [
{
color : "#FFE9E9",
name : 'Naomi White',
age : 25,
dob : '03/17/84',
cars : ['Jetta', 'Pilot', 'S2000']
},
{
color : "#E9E9FF",
name : 'John Smith',
age : 20,
dob : '10/20/89',
cars : ['Civic', 'Accord', 'Pilot']
}
];
var myTpl = new Ext.XTemplate(
'<tpl for=".">',
'<div style="background-color: {color}; margin: 10;">',
'<b> Name :</b> {name}<br />',
'<b> Age :</b> {age}<br />',
'<b> DOB :</b> {dob}<br />',
'</div>',
'</tpl>'
);
myTpl.compile();
myTpl.append(document.body, tplData);
注意代码:
'<tpl
for=".">',
中的“.”这个东西,它表示:对所传递的参数数组的每个对象,按照tpl中定义的HTML来组织显示。运行结果实例如下:
- 大小: 21.4 KB
- 大小: 19.2 KB
- 大小: 31.4 KB
分享到:
相关推荐
- **多次操作时效率较低**:如果需要对同一个DOM元素进行多次操作,则每次调用`Ext.fly`都会重新创建`Ext.Element`对象,不如`Ext.get`高效。 #### 使用场景分析 - 当需要对DOM元素进行频繁操作时,推荐使用`Ext....
相反,`Ext.fly`(也称为`Ext.Element.fly`)是一个轻量级的版本,主要用于一次性操作。它同样接受一个DOM元素的ID或DOM元素对象,但不会缓存结果。这意味着每次调用`Ext.fly`都会创建一个新的`Ext.Element`实例,...
`Ext.fly`,也称为`Ext.Element.fly`,是一个轻量级的快捷方式,它主要用于一次性操作DOM元素,不会保存对象引用,这意味着每次调用`Ext.fly`都会创建一个新的`Ext.Element`实例,这减少了内存占用。然而,这也意味...
11. `Ext.getDoc()`和`Ext.getBody()`: 分别返回文档对象和Body对象,返回的是`Ext.Element`包装的对象,而不是原始DOM对象。 12. `Ext.getCmp( String id )`: 根据HTML元素的ID获取对应的`Ext.Component`对象。这...
如果要为一个元素设置ID并返回该ID,可以传入元素的ID、DOM对象或Ext.Element对象。可以提供前缀参数来定制ID的开头。 6. `Ext.extend(Object subclass, Object superclass, [Object overrides])`: 这是实现...
7、Ext.Element类 ………………………… 7 8、Ext.DomQuery类 ………………… 13 9、Ext.DomHelper类 …………………… 14 10、Ext.Template类 …………………… 14 11、Ext.EventManager类 ……………… 15 12、Ext...
// 返回下一个侧边节点,但一定要是div的,找到就返回,类型是Ext.Element Ext.fly('elId').next("div"); 27.prev 获取上一个侧边节点,跳过文本节点。可选地可送入一个期待的选择符。 // 返回上一个侧边节点,...
someElement.animate({ duration: 500, opacity: 0 }).then({ duration: 500, x: '+=100' }); ``` 三、高级特性 1. **Easing**:Easing是动画速度变化的函数,它可以使得动画不均匀加速或减速。例如,`ease...
5. **Element属性和方法**:`Ext.Element`不仅提供了访问底层DOM节点的能力(通过`Element.dom`),还提供了统一的属性和方法,如`getWidth`、`getHeight`、`addClass`、`removeClass`等,简化了DOM操作。...
`Ext.Element`是Ext 2.0的核心功能之一,提供了对DOM元素的强大操作能力。通过`Ext.Element`,开发者可以轻松获取DOM元素,并对其执行一系列操作。 ##### 1. 通过ID获取元素 ```javascript var myDiv = Ext.get('...
Ext.Element 提供了许多有用的方法来获取界面上的元素,例如通过 ID、className、tagName 等方式来获取元素。 ExtJS 中的面向对象编程是通过 Ext.namespace() 函数来实现的,例如 Ext.namespace("Ext.cc");。 ExtJS...
在`EXT核心API详解(三)-Ext.Element.txt`中,你将了解到如何选择元素、添加和移除CSS类、处理事件、动画效果以及布局调整。 2. **Array, Date, Function, Number, String**: 在`EXT核心API详解(二)-Array Date ...
目录 1. ExtJs 结构树 2 2. 对ExtJs的态度 3 3. Ext.form概述 4 4. Ext.TabPanel篇 5 ...26. extJs 2.0学习笔记(Element.js篇) 73 27. extJs 2.0学习笔记(DomHelper.js篇) 76 28. extJs 2.0学习笔记(ext.js篇) 77
`Ext.Element`类是对DOM的封装,它可以为每个DOM节点创建一个对应的`Element`对象,从而通过`Element`对象的方法实现对DOM的操作,例如隐藏元素或添加拖放功能。 **语法**: ```javascript Ext.get(selector) ``` *...
在Ext Core中,`Ext.Element`类是核心组件之一,它封装了不同浏览器下的HTMLElement对象,解决了跨浏览器的兼容性问题。`Ext.Element`拥有大量方法,包括处理CSS样式、DOM查询、DOM操作以及获取元素的尺寸和位置等。...