ExtJS 组件扩展 组件化编程 扩展组件 组件编程(二)

本文介绍如何使用ExtDesigner设计自定义ExtJS组件。通过实例演示创建并扩展原生Form组件的过程,包括设定参数、生成源代码、事件处理及自定义方法添加。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


看到很多人搜索这些关键词带来的访问,我觉得有必要专门写一篇文章提供给这些关键词,也算是推广一下ExtJS 组件化编程吧

我是实用ExtDesigner的,所以这里讲讲如何利用ExtDesigner设计自己的组件。

先来一个常用的例子,构建一个自己的Form组件,用ExtDesigner拖拖拽拽,一个简单的From就出来了,如图

 

之后我们给这个From设定一下参数,在ExtDesigner界面的右下角,其中有一个参数是很重要的,就是jsClass这个参数,这个参数设定的是此Form的对象名称 ,其他参数可以根据自己对界面样式的要求自定设定,比如宽度高度等,如图

 

设置好参数后,我们看一下它生成的源代码

 

他生成了一个叫做MyFormUi的对象,这个对象名称就是根据刚才参数中jsClass设定的。

现在我们保存一下工程,然后点击一下那个导出工程的按钮

 

找到刚才保存工程的文件夹,它会自动生成几个文件

其中有两个主要的js文件,MyForm.js和MyForm.ui.js,这两个文件一个是界面对象,一个是事件处理对象,ExtDesigner已经帮你把界面和逻辑分离的工作做好了,是不是很高级?如果你不理解为什么这么做,参考一下我的另外一篇文章:ExtJS编程思想和开发方式|ExtJS单页面系统|ExtJS单页面应用

MyForm.ui.js中的代码和上面图片上的是一样的,来看一下MyForm.js这个文件

 

 

注意看红框框里面那句话,目前这个文件都是ExtDesigner自动生成出来的。那句话啥意思我就不翻译了。

现在讲讲如何实现事件处理和添加自定义方法 :

现在我们把MyForm对象改成这样,如图,红框框的部分是新加的代码

 

 

在initComponent方法中增加了一个事件监听,this.addListener(‘afterrender’, this.init, this);,这个目的是增加一个自己的初始化方法(init)我们可以在这个init方法里面尽情的做自己需要做的事情,我在这个init方法里面又调用了一个initListeners方法,因为某些时候我们要增加许多事件处理函数,所以把所有事件处理都放在这个initListeners方法中,比较清晰。

我们的init函数是在afterrender之后调用的,注意:这个afterrender事件,在组件的声明周期内只有一次,所以我们的初始化函数也只会被执行一次,也是因为afterrender,所以我们在刚刚new过之后,在没render之前,init方法里面做的一些设置是无效的:例如init方法里面定义了一个变量this.myVar = ‘myvar’; 在form = new MyFrom() 之后直接调用form.myVar,这样是无效的 。

下面我们做一个初始化操作,并增加一个事件处理,如图:

 

 

MyForm = Ext.extend(MyFormUi, {
initComponent: function () {
this.addListener(‘afterrender’, this.init, this);
MyForm.superclass.initComponent.call(this);
},
init: function () {
this.setTitle(‘this is my first form component’);
this.initListeners();
},
initListeners: function () {
this.get(0).on(‘focus’, this.onFocus, this);
},
onFocus: function () {
alert(‘you focus me’);
}
});

初始化操作是设置MyForm的标题,

this.setTitle(‘this is my first form component’);

增加了一个响应focus事件的函数

this.get(0).on(‘focus’, this.onFocus, this);

当我们focus第一个文本框的时候,会调用onFocus函数,onFocus函数中执行了一个alert

我们看一下运行效果

 

以上就是利用ExtDesigner扩展一个原生组件成为自己的组件的简单例子,其他扩展大同小异

以后有时间再介绍如何扩展底层组件成为自己的控件。


转载地址:http://www.showframework.com/2010/10/extjs-component-coding-2/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值