0

我对 JS 有一个奇怪的问题(可能是一个新手错误),但我坚持下去

在函数fillInVersionsList中,如果我alert("tempo")在 firebug 中放置一个或中断,我可以在参数中访问我的数据(即:alert(pSimulator.simulatorData['LastVersion'])并且我得到了正确的结果。问题是,如果我在访问之前没有放置警报/firebug 中断对于数据,我有一个 JS 错误 pSimulator.simulatorData is undefined

$(document).ready(function() {

    var simulator = new Simulator();

    // Load SimulatorData into the simulator class
    initSimulatorData(simulator);
    // Fill in datas into VersionsList (2nd arg = Id of the list)
    fillInVersionsList(simulator, $('#VersionsList'));  


});

function initSimulatorData(pSimulator)
{
    $.ajax({
      url: "getData.php?action=init",
      success: function(data) {
          pSimulator.initSimulatorData(data);
        }

    });

}


function fillInVersionsList(pSimulator, pSelect)
{
    //alert("tempo");
    alert(pSimulator.simulatorData['LastVersion']);

    pSelect.html('<option>test</option>')       

}

function Simulator()
{

    var simulatorData;


    this.initSimulatorData = function(pSimulatorData)
    {
        this.simulatorData = pSimulatorData;    
    }




}

有什么办法可以解决这个问题吗?

提前致谢

4

2 回答 2

1

我怀疑initSimulatorData正在异步加载一些数据。

添加alert给它足够长的时间来加载数据。

您将需要添加某种回调函数,例如:

initSimulatorData(simulator, function () {
    // Fill in datas into VersionsList (2nd arg = Id of the list)
    fillInVersionsList(simulator, $('#VersionsList'));  
});
于 2012-05-11T10:01:46.890 回答
0

从您的问题来看,模拟器需要时间来初始化,而当调用 fillInVersionsList 时 pSimulator 仍未完全初始化。

当您发出警报时,初始化时间模拟器会出现一些时间延迟。

检查模拟器完全初始化后是否有回调方法,然后调用fillInVersionsList方法。

initSimulatorData(simulator) 是做什么的?这里面有什么异步代码吗?

于 2012-05-11T10:04:26.757 回答