我正在尝试编写一个涉及大量代码的大项目。这就是我想要将功能与不同文件分开的原因。
第一个文件dataJS,我进行AJAX调用以从JSON文件中获取数据。 第二个文件showJS我想显示从dataJS文件中获取的数据。
说到实现,我意识到AJAX调用需要更长的时间,即使我按顺序包含dataJS和showJS,showJS仍然会得到一个空数据
因此我在showJS文件中创建了一个名为continueFromDataJS()的函数 并在AJAX success 函数结束时调用continueFromDataJS()。
我认为这是一个相当makedo的解决方案。有没有标准的方法呢?
此外,我的Visual Studio中的所有intellisense都消失了。尽管有单独的文件,有没有办法让visual studio从dataJS获得intellisense?
谢谢
答案 0 :(得分: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 有可能吗?