0

I am trying to write a big project which involves of a lot of code. That's why I want to separate functionalities from different files.

第一个文件 dataJS,我进行 AJAX 调用以从 JSON 文件中获取数据。第二个文件,showJS 我想显示从dataJS文件获得的数据。

在实现方面,我意识到 AJAX 调用需要更长的时间,即使我按顺序包含了 dataJS 和 showJS,showJS 仍然会得到一个空数据

因此,我在 showJS 文件中创建了一个名为 continueFromDataJS() 的函数,并在 AJAX成功函数的末尾调用 continueFromDataJS() 。

我认为这是一个相当勉强的解决方案。有没有标准的方法来做到这一点?

此外,我的 Visual Studio 中的所有智能感知都消失了。尽管有单独的文件,有没有办法让 Visual Studio 从 dataJS 中获得智能感知?

谢谢

4

1 回答 1

0

抱歉,我不知道如何添加后续问题这是代码

为简单起见,我重命名了一些文件,并且只提取了其中的一部分。希望有帮助

html中的代码

dataJS.js 中的代码

var planets = [];
var jsonData = null;

$(function () {

$.getJSON("Scripts/planetData.js", function (data) {
    //planets[0] = new planet("uranus", "career", 45, 700, 400, 0.1, 5, 3);
    jsonData = data;
    for (var i = 0; i < data.planets.length; i++) {

        var curPlanet = data.planets[i];

        planets[i] = new planet(curPlanet.graphic, i, curPlanet.field, curPlanet.planetInitialAngle, curPlanet.distanceFromStar, curPlanet.planetRadius, curPlanet.planetRevolvingSpeed, curPlanet.planetRotationSpeed, curPlanet.contents.length);

        $("#result").append("<p>" + curPlanet.graphic + " " + curPlanet.field + " " + curPlanet.planetInitialAngle + " " + curPlanet.distanceFromStar + " " + curPlanet.planetRadius + " " + curPlanet.planetRevolvingSpeed + " " + curPlanet.planetRotationSpeed + " " + curPlanet.contents.length + "</p>");

    }


    callDisplayScript(); //**continue from showJS.js file is that the way to do this?**

    });

});
// more functions below in dataJS.js

显示JS.js

function callDisplayScript() { **// this is the ugly part. What's the proper way to do it?**
    $("#display #close").click(function () {
        $("#display").fadeOut('slow');
    });
    $article = $("#display article");
    $article.empty();
    var data = jsonData.planets[pID].contents; // **this line won't get jsonData if it's out this curly brace.**

    for (var i = 0; i < data.length; i++) {
        $article.append(data[i].title);
        $article.append(data[i].content);
    }

    $("#display").fadeIn('slow');
};

不要忘记回答我的智能感知问题。我想在 datajs.js 中自动提示在 datajs.js 中声明的行星和 jsonData 是否可能?

于 2013-03-05T10:28:02.417 回答