- 浏览: 545472 次
- 性别:
- 来自: 广州
-
文章分类
- 全部博客 (339)
- JavaBase (27)
- J2EE (70)
- Database (22)
- Spring (3)
- struts1.x (6)
- struts2.x (16)
- Hibernate (10)
- IBatis (4)
- DWR (1)
- SSH (5)
- Oracle (31)
- HTML (12)
- javascript (11)
- Thinking (3)
- Workflow (5)
- Live (13)
- Linux (23)
- ExtJS (35)
- flex (10)
- php (3)
- Ant (10)
- ps (1)
- work (2)
- Test (1)
- Regular Expressions (2)
- HTTPServer (2)
- 方言 (1)
- 生活 (2)
- Sybase PowerDesigner (0)
最新评论
-
mikey_5:
非常感谢楼主的分享,<parameter propert ...
Check the output parameters (register output parameters failed) IN Ibatis -
影子_890314:
我现在也有这个错误,求解!
Check the output parameters (register output parameters failed) IN Ibatis -
358135071:
学习了,感谢分享!
使用hibernate 代替 mysql 中 limit 進行分頁 -
wjpiao:
你下面的“正确的映射”里面不是还是有number类型吗?
Check the output parameters (register output parameters failed) IN Ibatis -
zh_s_z:
很有用!弄一份吧!
Oracle数据库分区表操作方法
from:
----------------------------------------------------
http://www.extjs.com/learn/Tutorial:Extending_Ext_for_Newbies_%28Chinese%29
----------------------------------------------------
一般你会希望使用类(class)来诠释面何对象的思想。本教程的所述几点理点亦体现了这种思想。
复用的类
有时候你打算生成一个带有若干配置项(config options)的组件(component),这些配置项你会想是让它可复的。就好像一种情况,有一部分的面板是已经固定好高、宽的,其中只有标题是不同的,我们可以把它做成预配置类(preconfigured class)。
使用构造器函数
构造器函数是完成该任务的方法之一,如下例:
// 构造器函数
var MyPanel = function(config) {
Ext.apply(this, {
// 在这里设定预配置的参数项
width: 300,
height: 300
});
MyPanel.superclass.constructor.apply(this, arguments);
};
// My Panel继承了Ext.Panel
Ext.extend(MyPanel, Ext.Panel, {});
var myfirstpanel = new MyPanel({
title: 'My First Panel'
});
var mysecondpanel = new MyPanel({
title: 'My Second Panel'
});
工厂模式
生成“预配置对象”的一种途径是使用工厂模式(Factong Design Pattern)。透过工厂函数返回一个全新的实例(该函数包含了预先配置好的参数项),工厂模式的方法不需要类的继承。如果纯粹为了制定固定的配置项参数来讲工厂模式是一个不错的方法,其内部原理比继承、覆盖某个类来得简单。
function createMyPanel(config) {
return new Ext.Panel(Ext.apply({//在这里设定预配置的参数项
width: 300,
height: 300
}, config));
};
var myfirstpanel = createMyPanel({
title: 'My First Panel'
});
var mysecondpanel = createMyPanel({
title: 'My Second Panel'
});
扩展功能
使用OO的类的其中一个原因是你打算从另外一个类的基础上扩展新的功能,假设现在有一面板类,我们在此基础上增加一个新的方法并重写(override)父类的一个方法,过程如下:
// Constructor
var MyPanel = function(config) {
//这里复用配置项
Ext.apply(this,
width: 300,
height: 300
});
// 调用父类的构造函数,提取父类的功能
MyPanel.superclass.constructor.apply(this, arguments);
// 在这里你可以为当前对象新添加功能
// 如事件:
this.on('click', function() {alert("You Clicked " + this.title);}, this);
};
// My Panel继承了Ext.Panel
Ext.extend(MyPanel, Ext.Panel, {
// 在这里你可以为当前的类加入静态的变量,所有这个类生成的实例都是使用这里声明的变量
// 如果你不确定请在构造器内设定。不要在这里放置由'new'或'xtype'操作而成的对象。在构造器内设定配置项对象会更安全。
// 新添加的函数
myNewFunction: function() {
},
// 重写原有函数
onRender: function() {
MyPanel.superclass.onRender.apply(this, arguments);
this.myNewFunction();
}
});
var myfirstpanel = new MyPanel({
title: 'My First Panel'
});
var mysecondpanel = new MyPanel({
title: 'My Second Panel'
});
另一种方法是用构造器的方式写出代码:
var MyPanel = function(config) {
// 调用父类的构造函数,提取父类的功能
MyPanel.superclass.constructor.call(this, Ext.apply({
//这里复用配置项
width: 300,
height: 300
}, config));
// 位于构造器之后,在这里你可以为当前对象新添加功能(如处理如事件)
this.on('click', function() {alert("你已点击" + this.title);}, this);
};
以上的方法是重写构造器的方式实现继承的,另外我们还可以重写initComponents方法写出相同的功能,但需要指出是initComponent方法是属于 Ext.Components的方法,只能在组件上使用,不是一个通用的方法。这里是一个示例:
var MyPanel = Ext.extend(Ext.Panel, {
// 在这里你可以为当前的类加入静态的变量,所有这个类生成的实例都是使用这里声明的变量
// 如果你不确定请在构造器内设定。不要在这里放置由'new'或'xtype'操作而成的对象。在构造器内设定配置项对象会更安全。
initComponent: function() {
//Reusable config options here
Ext.apply(this,
width: 300,
height: 300
});
// 调用父类的构造函数,提取父类的功能
MyPanel.superclass.initComponent.apply(this, arguments);
// 位于构造器之后,在这里你可以为当前对象新添加功能(如处理如事件)
this.on(
'click',
function() {
alert("你已点击" + this.title);
},
this
);
},
// 新添加的函数
myNewFunction: function() {
},
// 重写原有函数
onRender: function() {
MyPanel.superclass.onRender.apply(this, arguments);
this.myNewFunction();
}
});
你首先可能会观察到的是这儿没有构造函数。Ext会为你创建构造函数。这个构造函数有点不同,叫initComponent。
这在高级教程和例子常见的使用方法。只要简单记住它做的事情与构造函数是差不多的。
推荐在调用父类的构造器或initComponent方法之后,为当前对象新添加事件。
MyPanel.superclass.constructor.apply(this, arguments);
// 位于构造器之后,在这里你可以为当前对象新添加功能(如处理如事件)
this.on(
'click',
function() {
alert("你已点击" + this.title);
},
this
);
工厂模式的案例中你可以在工厂方法以外的地方登记事件的处理函数。
myFirstPanel.on(
'click',
function() {
alert("你已点击" + this.title);
},
myFirstPanel //作用域
);
另外,除了添加listeners配置项还有其他处理监听器的方法,不过我推荐高级用户使用。
完成同一件事在Ext中有不同的方式。挑选一种你较倾向的方法。
发表评论
-
纵向Tab ---ext
2010-09-28 16:02 1254net address: http://carina. ... -
js code compress
2010-06-11 01:22 1013文章转自: http://www.rainway.org/20 ... -
Ext.data.Store
2010-04-16 21:26 1466原文: http://www.9iext.cn/thr ... -
ExtJs 确认密码验证的两种实现
2010-03-17 16:36 5070实现1: ************************* ... -
extjs换肤
2010-02-26 14:15 1245extjs换肤 http://www.javachen ... -
ext 教程
2010-01-29 17:05 1012关于Ext 扩展比较好的文章: http:// ... -
demo
2010-01-26 20:11 1227一、下载extjs 1、从http://www.extj ... -
你的水平 字段没超出所以没 滚动条!
2009-12-16 21:36 1108你的水平 字段没超出所以没 滚动条! 你试下吧 colu ... -
在EXT中使用FCKEditor编辑器例子
2009-12-15 16:47 1264... -
js oo
2009-12-15 10:22 864var RectAngle = function(width, ... -
costom extend
2009-12-15 09:06 952//自定義繼承 ---------------------- ... -
Ext extend
2009-12-14 23:56 1324第一章 必须理解Ext.extend ... -
JS中的 prototype的含义
2009-12-14 22:02 1792搜了两 个认为好的讲解 Prototype 属性的 ... -
想起温习一下JS中的this apply call arguments
2009-12-14 21:03 1198很多时候讲到语言入门,大家会认为就是要了 ... -
阅读 Ext 学习Javascript(一)Core/Ext.js
2009-12-14 20:46 977从Library的角度 ... -
阅读Ext学习Js(二)---extend从继承说起
2009-12-14 20:45 1095一般的,如果我们定义一个类,会定义一个function对象,然 ... -
Extjs 研究: js基础
2009-12-14 20:33 10871.我们写的变量 ,函 ... -
ExtJS 入门之一 类与继承
2009-12-14 20:08 815在项目中使用ExtJS已经 ... -
Ext表單中一行多列的布局
2009-12-07 08:01 3880var simpleForm = new Ext.Form ... -
extend Ext component demo
2009-12-06 14:01 896extjs的Ext.extend的使用样例(Ext继承) ...
相关推荐
书中提到了几种不同的构建扩展的方法,如使用`ext_skel`或`PECL_Gen`工具来自动生成扩展模板。这些工具可以帮助开发者快速搭建起扩展的基本框架,从而将更多的精力放在具体的业务逻辑上。 #### 扩展与嵌入 **扩展*...
扩展(Extending)则更侧重于在运行时向现有类添加新的功能,而无需创建全新的类。这通常通过实现`Ext.override`方法来完成。当你希望为一个现有的类增加新的方法或覆盖原有的方法时,可以使用这种方法。例如,如果...
最后,在第十章“Extending, Unit Testing, and Packaging”中,作者强调了对Ext JS 4应用进行扩展、单元测试和打包的重要性。这部分内容涵盖了如何编写可扩展的代码,进行单元测试来确保代码质量,以及如何将应用...
Explore, debug, and get practical by extending the sample projects, including a sample RESTful API project in Ext JS 6 Gain a quick and easy understanding through working source code and get an ...
非常好的一本介绍ExtJS 4的书,英文版的,不过通俗易懂,强烈推荐。 Chapter 1: Core JavaScript and JavaScript Frameworks Chapter 2: Overview of Ext JS 4 ...Chapter 10: Extending, Unit Testing, and Packaging
在ExtJs的官方网站上有一个带图片的下拉列表,其中扩展了ExtJs的Combo,名称叫做IconCombox,官方地址为: http://www.extjs.com/learn/Tutorial:Extending_Ext_Class_Chinese 但是这个IconComboBox有个缺点,就是...
最后,“M是正则投射的R自ext”指出了M不仅是投射的,并且它满足正则性,即M的任意循环子模都是M的直和因子。 在具体证明中,还提到了循环基本子模的构造,这是构建模分解的关键步骤之一。循环子模是指由单个元素...
自我扩展(self-extending)是一种设计模式,允许我们在现有的类基础上添加新的功能或改进现有行为,而无需修改原代码。在ExtJS中,我们可以通过继承FormPanel和Store类,然后重写或添加方法来实现自我扩展。例如,...
Autoconf库用于查找和链接必要的模块,扩展生成器(如ext_skel和PECL_Gen)是构建扩展的工具。嵌入式SAPI和宿主环境的设置是扩展集成到应用程序中的方法。错误处理、全局变量和超级全局变量的使用,以及通过嵌入式...
描述中提到的“support for extending counters to full 64-bit ns counter”意味着这个实现支持扩展计数器,使其能够精确到64位纳米级别的时间戳,这极大地提高了时间精度,对于实时性和低延迟应用尤其关键。...
lvextend命令的作用是在线扩展逻辑卷的空间大小,而不中断应用程序对逻辑卷的访问。 使用lvextend命令动态在线扩展磁盘空间,整个空间扩展过程对于应用程序来说是完全...Extending logical volume lvol0 to 300.00 MB L