事件是指乙個特定的動作,這個動作可以針對html元素的,如keydown,keyup,mouseover, mouseout等,也可以是對於其它自定義的動作,如對ajax非同步請求的響應等。在extjs中,該如何處理呢?
1. 處理html元素的標準事件
html元素的標準事件是指mouseover、mousedown、click、blur、focus、change等能夠直接對html元素發生的事件。在extjs中,這些事件的處理可以用如下的**:
* 註冊乙個事件處理函式使用: ext.get('myelement').on('click', myhandler, myscope) myelement是要註冊的元素的id,click是事件的名稱(注意,和html元素中的宣告on***不同,這裡不需要on),myhandler 是處理函式的函式名稱,myscope是乙個可選的引數,指定處理函式繫結的物件,也就是處理函式的作用域,如果不提供這個引數,則是預設的 window。
* 撤銷乙個事件處理函式: ext.get('myelement').un('click', myhandler, myscope) 引數的意義同上。
extjs會根據不同的瀏覽器進行相應的處理,根本不需要理會使用者用的是什麼瀏覽器。根據事件的不同,傳給處理函式的引數也會不同,這個只能參考extjs的文件了,必要時還得參考源**。
2. 處理自定義事件
在extjs中使用自定義事件,需要從ext.util.observable繼承,示例**如下:
employee = function(name));
} ext.extend(employee, ext.util.observable, );
在這段**中,定義了乙個employee類,定義了fired和quit兩個事件。如何觸發這兩個事件呢,基類ext.util.observable提供了觸發自定義事件的方法fireevent(eventname, arg1, arg2, ... argn), eventname是要觸發的時間的名稱(不區分大小寫),後面的引數arg1,arg2等是要傳給事件處理函式的引數。用上面的employee類做示例,觸發quit事件:
this.fireevent('quit', this);
這行**將觸發quit事件,並將empolyee類的例項傳給quit事件的處理函式,quit事件的訂閱可以採用如下**:
function myhandler1(empolyee)
function myhandler2(empolyee)
var emp = new empolyee('tom');
emp.on('quit', myhandler1);
emp.on('quit', myhandler2);
在上面的**中,為quit事件註冊了兩個處理函式(myhandler1與myhandler),當quit事件被激發時,將會依次呼叫myhandler1和myhandler2兩個函式。
值得注意的是,不管是html元素的標準事件還是自定義事件,如果為某個時間註冊了多個處理函式,如前面的例子,如果myhandler1返回false 的話,則會取消在myhandler1之後註冊的處理函式的執行,即該事件被取消,從而停止繼續執行該事件的處理函式,而這個返回值false會作為事件激發的結果,返回給empolyee,即:
var result = this.fireevent('quit', this);
if (result === false)
else
通過ext的自定義事件的機制,可以實現一對多的觀察者模式,也可以實現一對一的繫結模式,這一點,在extjs的開發中是很重要的
ExtJS入門之事件 fireEvent
事件是指乙個特定的動作,這個動作可以針對html元素的,如keydown,keyup,mouseover,mouseout等,也可以是對於其它自定義的動作,如對ajax非同步請求的響應等。在extjs中,該如何處理呢?1.處理html元素的標準事件 html元素的標準事件是指mouseover mo...
ExtJS入門之事件 fireEvent
事件是指乙個特定的動作,這個動作可以針對html元素的,如keydown,keyup,mouseover,mouseout等,也可以是對於其它自定義的動作,如對ajax非同步請求的響應等。在extjs中,該如何處理呢?1.處理html元素的標準事件 html元素的標準事件是指mouseover mo...
ExtJS入門之事件 fireEvent
事件是指乙個特定的動作,這個動作可以針對html元素的,如keydown,keyup,mouseover,mouseout等,也可以是對於其它自定義的動作,如對ajax非同步請求的響應等。在extjs中,該如何處理呢?1.處理html元素的標準事件 html元素的標準事件是指mouseover mo...