2013-07-05 30 views
0

喜,所以我想建立一個緩存系統緩存的jQuery的JSON文件

這種工作方式是,當一個選項卡上的用戶點擊它加載的JSON該選項卡 - 所有工程確定開從如果用戶多次單擊它選項卡上它並取多次json - 不理想

所以我的想法是建立一個緩存,以便在第一次單擊一個選項卡後,該json被添加到緩存並在下一次從那裏打電話。

這個問題真的在哪裏初始化緩存數組,以便函數可以添加到它。

顯然,我現在擁有它的意思是它的未定義,當它試圖調用getData函數。誰能幫忙?這裏是代碼

$(function() { 
    var cache = {}; 
    $(".nav-tabs li a").on("click", function(){ 
     var tabID = $(this).attr("href"); 
     getData(tabID, applicationID); 
    }); 
}); 

function getData(tabID, applicationID){ 
    tab = tabID.replace('#', ''); 
    var promise = this.cache[tab]; 

    if (!promise) { 
     promise = getJSON(tab, applicationID); 
     this.cache[name] = promise; 
    } 

    $.when(promise).then(function(result) { 
    //do something! 
    }); 

function getJSON (name, applicationID) { 


    var promise = $.ajax({ 
      url: 'data/' + name + '.json', 
      method: 'get', 
      dataType: 'json', 
      data: {appID:applicationID} 
    }); 

    return promise; 
} 
+0

你可以使用jquery ui標籤插件嗎? –

回答

1

一種方法是聲明cache爲全局變量。

另一種方法是把的getDatagetJSON的定義裏面$(function() {...});,因此他們將在相同的範圍內cache