extjs事件,extjs学习--事件机制

由于工作和个人的原因已经有一段事件没有学习extjs了,这两天重新开始。
可能是我真的太愚笨了,花了一天的时间才把extjs的事件机制大体上弄明白了,但还很肤浅。
1.浏览器的事件机制--事件就是一个对象发生的事
浏览器的事件机制有两种模型。
第一种是最基本的原始时间模型。如:将嵌入处理代码到HTML标签,和赋值到元素的事件属性中进行注册事件的处理工作。在这种模型中,每个事件只能注册一个处理函数,作用域是其运行的对象。
第二种是标准模型,采用addEventListner为元素增加时间处理函数。注册函数 作用域和不再是当前运行的对象,而是定义它的对象。
2.extjs的事件机制
第一步:定义对象(A容器),所有继承自ext.util.Observable类的控件都支持事件。
第二步:为这些继承了ext.util.Observable的对象定义一些事件,如用addEvent(E1);
第三步:为这些事件配置监听器(如用on来添加事件监听器),当某个事件被触发(fireEvent)时,extjs会自动调用相应的注册函数。
一般来说,为这些事件配置的监听器都在另一个容器(B容器)里。
假设A容器在定义时定义了事件E1(addEvent(E1)),定义B容器时,A容器是B容器的一个成员,此时需要在B容器里为它的成员A配置E1的监听器
(this.A.on("E1",functionE1)),并为E1事件注册函数functionE1。当B容器监听到其成员A触发事件E1(fireEvent(E1)),则调用其注册函数functionE1。
以下是个小例子,每个类里没有任何的配置属性,也没有任何初始化。
//商品查询窗体 ProductsSearchGridPanel = Ext.extend(Ext.grid.GridPanel, { //下面两个事件是将本GridPanel选中的商品添加到上层的GridPanel,但此时的ProductsSearchGridPanel只是处于定义的状态并未是上层的一个成员, //因为涉及另一个类的操作,所以在这个类定义时需要增添此事件,但在另一个类必须要对该事件进行监听。 this.addEvents('selectRecord'); this.addEvents('unselectRecord'); this.addEvents('submit'); columns: [ { handler: this.onClickAddBtn, scope: this, handler: this.onClickDelBtn, scope: this }], _disibledevent=>

Tags:  extjs学习 extjs事件

延伸阅读

最新评论

发表评论