2015-07-03 36 views
1

我有一個5000毫秒超時的ajax TreeStore,並且當查詢執行時間超過超時時,我想捕獲該事件。我該怎麼做?ExtJS當查詢執行時間超過超時時捕獲事件

我TreeStore:

Ext.define('Portal.store.ObjectsTreeStore', { 
    extend: 'Ext.data.TreeStore', 
    model: 'Portal.model.ObjectsTreeModel', 
    proxy: { 
     type: 'ajax', 
     url: 'my/url.json', 
     timeout: 5000, // 5 seconds 
     reader: { 
      type: 'json', 
      successProperty: 'success', 
      messageProperty: 'message' 
     } 
    }, 
    listeners: { 
     beforeload: function() { 
      console.log('1');  
     }, 
     load: function() { 
      console.log('2');  
     }, 
     exception: function() { 
      console.log('3');  
     } 
    } 
}); 

有了這個代碼超過了查詢執行時間,並要求取消的時候我只趕上beforeload事件。當一切正常時,我抓到beforeloadload

回答

0

只需將您的異常偵聽器附加到代理而不是存儲。看例子:https://fiddle.sencha.com/#fiddle/psj

+0

謝謝,在你的例子中所有的作品,因爲我的期望,但我不能讓它在我的代碼工作。我試圖更深入地檢查我的代碼。 –

0

Ajax存儲代理在後臺使用Ext.Ajax向服務器發送HTTP請求。你可以在Ext.Ajax單身,這樣的註冊requestexception event處理程序:

Ext.Ajax.on('requestexception', function() { 
    console.log('HTTP error'); 
}); 

只是要小心,因爲此事件處理程序將被無論解僱誰發起請求,以便它是全系統(全球),而不是特定於組件發起請求(Portal.store.ObjectsTreeStore您的情況)。