加载加载时未设置变量的JavaScript文件
这篇文章的标题可能无法完全解释,但我希望这样做:我将JavaScript代码放在一个单独的文件中,并按照这样的方式进行排列加载加载时未设置变量的JavaScript文件,javascript,Javascript,这篇文章的标题可能无法完全解释,但我希望这样做:我将JavaScript代码放在一个单独的文件中,并按照这样的方式进行排列 var PK = { "vars" : { "uris" : { "app1": "http://this/server/", "app2": "http://that/server/" }, "something": { "objects":
var PK = {
"vars" : {
"uris" : {
"app1": "http://this/server/",
"app2": "http://that/server/"
},
"something": {
"objects": [],
"obj1": { "url": PK.vars.uris.app1 },
"obj2": { "url": PK.vars.uris.app2 }
}
},
"methods" : {
"doThis" : function(a) {
$.ajax({
url: PK.vars.uris.app1,
data: data,
type: "GET",
success: function(data) { .. do something .. }
});
},
"doThat" : function(a) {
$.ajax({
url: PK.vars.uris.app2,
data: data,
type: "GET",
success: function(data) { .. do something else .. }
});
},
"init" : function(position) {
if (position) { PK.methods.doThis();
}
else {
PK.methods.doThat();
}
}
}
};
然后,在我的html中,我有以下内容
$(document).ready(function() {
PK.vars.uris.app1 = "[% app1 %]";
PK.vars.uris.app2 = "[% app2 %]";
PK.methods.init();
});
其中,根据配置文件从服务器发送app1
和app2
的值。除此之外,它没有按预期工作,因为在加载单独的JavaScript时,当时没有定义PK.vars.uri。当然,如果我对PK.vars.uri{}进行了硬编码,那么一切都运行得很好
如何将
var PK
的计算延迟到文档已加载且PK.vars.uri
可用于JavaScript代码之后?问题在于您需要将值传递到初始化器中
这种方法如何:
在外部文件中:
function PK_Constructor(app1Uri, app2Uri) {
this.vars = { "uris" : {
"app1" : app1Uri,
"app2" : app2Uri
},
"something": {
"objects": [],
"obj1": { "url": app1Uri },
"obj2": { "url": app1Uri }
},
};
this.doThis = function(a) {
$.ajax({
url: this.vars.uris.app1,
data: data,
type: "GET",
success: function(data) { .. do something .. }
});
// etc
}
在HTML中:
// Ensuring PK has global scope
var PK = undefined;
$(document).ready(function() {
PK = new PK_Constructor("[% app1 %]", "[% app2 %]");
});
不确定我是否理解-但是你能先加载单独的文件吗?嗯。。。我希望我在解释看似简单的情况时没有弄错。My
external.js
具有中定义的var PK={}
。通过脚本标记加载到主html文件中。在同一html文件中,PK.vars.uris
的值被初始化$(document).ready(function()
。我想确保external.js
中的var PK
可以使用初始化值。是的,非常感谢。当然,现在我必须弄清楚如何修改此模式,以便将其他几个配置参数传递给初始值设定项。但是,至少它给了我一些可以继续的东西。再次感谢。