應用場景:在項目中我要作一個左邊是tree,右邊是panel的界面。當我單擊tree中的一條記錄時,發送請求,並將結果顯示在右邊的panel中。作完以後發現,若是連續單擊就會連續請求兩次服務器,畢竟用戶不知道是應該單擊tree中的記錄仍是雙擊。服務器
解決思路:利用一個boolean類型的flag來判斷,並使用了 Ext.util.DelayedTask延時的技術。我先將flag設爲true,點擊一次以後立刻設置爲false,並在一秒延遲後將其從新設置爲true。而且只有當flag爲true時,單擊纔會請求服務器。this
flag:true,
listeners:{
scope:this, cellclick:function(view, td,cellIndex,record, tr, rowIndex, e, eOpts ){ if(this.flag||this.flag==undefined){ //爲何這裏要加一個this.flag==undefined,由於第一次點擊時flag沒有被初始化爲true,而是爲undefined,具體緣由我不知道 //這裏寫發送請求的代碼 this.flag=false; } var task = new Ext.util.DelayedTask(function(){ this.flag=true; }); task.delay(1000); //避免重複點擊 } },
這樣就解決了。1秒之內點擊幾回都只會發送一次請求。spa