0

嗨所以我正在尝试建立一个缓存系统

它的工作方式是,当用户单击一个选项卡时,它会在该选项卡的 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;
}
4

1 回答 1

1

一种方法是声明cache为全局变量。

另一种方法是把 和 的定义放在getData里面getJSON$(function() {...});这样它们就在同一个范围内了cache

于 2013-07-05T06:17:26.823 回答