国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

extjs 為某個事件設置攔截器

2019-11-21 00:48:30
字體:
來源:轉載
供稿:網友
我們先來自定義一個事件:
復制代碼 代碼如下:

person = function(name) {
this.name = name;
this.addEvents("walk");
}
Ext.extend(person, Ext.util.Observable, {
info: function(event) {
return this.name + 'is' + event + 'ing.';
}
});
var person = new person('張銘諾');
person.on('walk', function() {
Ext.Msg.alert('event', person.name + '在走啊走啊。');
});

然后我們再定義一個按鈕用來觸發這個walk事件:
復制代碼 代碼如下:

var btn = new Ext.Button({
id: 'walk',
text: '觸發事件按鈕',
renderTo: Ext.getBody()
});
btn.on('click', function() {
person.fireEvent('walk');
});

當點擊按鈕時觸發事件,效果如下圖所示:

現在我們使用capture()函數攔截事件的觸發,如下面的代碼所示:
復制代碼 代碼如下:

var btn2 = new Ext.Button({
id: 'cc',
text: '攔截事件',
renderTo: Ext.getBody()
});
btn2.on('click', function() {
Ext.util.Observable.capture(person, function() {
alert('fsdjhf');
return true;
});
});


這時單擊btn2按鈕,發現彈出對話框后還會觸發事件,郁悶。。。。現在將最后一行代碼改為return false試試?事件被攔截成功了吧!

  這樣就給我們一個選擇的機會,通過控制capture()中處理函數的返回值來決定是否繼續執行某個時間的監聽函數,還是直接中止該事件的發生。

我們還可以為一個對象設置多個capture()攔截函數,這些攔截函數會形成一個處理鏈條,只要其中任何一個攔截函數返回false,就會中止處理過程。

releaseCapture()函數是capture()函數的反向操作,它會一次性清除fireEvent()上所有的攔截函數,不過我們無法通過它準確的刪除某一個攔截函數。一旦執行了releaseCapture(),那么之前設置的所有攔截函數就都失效了。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 比如县| 旌德县| 银川市| 安溪县| 北辰区| 乐昌市| 霍邱县| 庆阳市| 桐城市| 桃园市| 中牟县| 长泰县| 彭山县| 洛南县| 黑龙江省| 苏州市| 郎溪县| 石河子市| 出国| 香格里拉县| 惠州市| 烟台市| 福清市| 昭苏县| 开平市| 昭觉县| 松江区| 合山市| 彝良县| 东光县| 河北区| 石林| 调兵山市| 巨鹿县| 收藏| 大英县| 崇明县| 紫金县| 疏附县| 曲沃县| 太仆寺旗|