2010-06-14 97 views
0

我正在使用Extjs 2.2.1和Alfresco 3.2企業版。如何在不重新加載網頁的情況下重新加載Ajax調用參數

我想更新處理登錄過程中已加載的組件的處理認證的門票。此票證在一段時間後過期,這就是爲什麼我需要更新票證的原因。

,似乎沒有可行的我(但請讓我知道,如果我錯了)選項:

  1. 重新加載組件加載調用參數 - 我不能這樣做,因爲它重置無論用戶以前在做什麼(即樹面板重新加載,網格過濾器重置等)。實際的網頁從不重新加載,因爲所有的東西都使用ajax調用來更新頁面上的東西。

  2. 創建一個全局變量,存儲票證並將其作爲調用參數附加到任何ajax調用 - 任何在登錄期間加載的組件都將使用原始票證來調用服務器。

回答

0

嘗試是這樣的

Ext.onReady(function() { 
    var token = new Ext.util.MixedCollection(); 
    token.add('id', 'THE_TOKEN_ID'); 
    Ext.ComponentMgr.register('token', token); 
}); 

把事件偵聽器,用於更新關心的令牌的任何組件MixedCollection

// now you need all the event listeners 
var token = Ext.getCmp('token'); 
var component = Ext.getCmp('some_component_that_needs_ajax'); 
token.on('replace', function(key, value, original) { 
    if(key == 'id') { 
    component.params.token_id = value; // update the new value 
    } 
}); 

每當令牌需要更新,做

var token = Ext.getCmp('token'); 
token.replace('id', 'THE_NEW_TOKEN_ID'); 

這是怎麼回事是:

  1. 您創建一個MixedCollection包含有關令牌信息。
  2. 當存在新令牌時需要更新的任何組件都應在replace偵聽器的處理程序中更新,用於令牌MixedCollection
  3. 當您獲得新的令牌ID時,請使用MixedCollection.replace以新的令牌ID更新id密鑰。
  4. 處理程序將觸發replace,並更新所有相關組件的偵聽器。
相關問題