0

私はたくさんのコードを含む大きなプロジェクトを書こうとしています。そのため、機能を別のファイルから分離したいと思います。

最初のファイルdataJSは、JSONファイルからデータを取得するためにAJAX呼び出しを行います。2番目のファイルshowJSdataJSファイルから取得したデータを表示したい。

実装に関しては、AJAX呼び出しに時間がかかり、dataJSとshowJSを順番に含めても、showJSはnullデータを取得することに気付きました。

したがって、showJSファイルにcontinueFromDataJS()という関数を作成し、AJAX成功関数の最後でcontinueFromDataJS()を呼び出しました。

私はそれがかなりmakedoの解決策だと思います。それを行うための標準的な方法はありますか?

さらに、VisualStudioのすべてのインテリセンスがなくなりました。個別のファイルにもかかわらず、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

showJS.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 に答える