게시물 제목이 완전히 설명되지 않을 수도 있지만, 여기에 내가 원하는 바가 있습니다. 별도의 파일에 자바 스크립트 코드가 있는데, 그렇게 배열했습니다.로드 시간에 vars가 설정되지 않은 JavaScript 파일을로드하십시오.
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에서, 나는 app1
과 app2
의 값이 설정 파일을 기반으로 서버에서 전송 된 다음
$(document).ready(function() {
PK.vars.uris.app1 = "[% app1 %]";
PK.vars.uris.app2 = "[% app2 %]";
PK.methods.init();
});
이 있습니다. 단, 별도의 JavaScript가로드 될 때 PK.vars.uris가 정의되어 있지 않으므로 예상대로 작동하지 않습니다. 물론 PK.vars.uris {}가 하드 코드 된 경우 모든 것이 아름답게 작동합니다.
문서가로드되고 JavaScript 코드에서 PK.vars.uris
을 사용할 수있을 때까지 var PK
의 평가를 지연시키는 방법은 무엇입니까?
하지 내가 이해해야합니다 -하지만 당신은 그냥 먼저 별도의 파일을로드 할 수 있습니다? –
흠 ... 나는 단순한 상황 인 것처럼 보이는 것을 설명하는데 어수선하지 않기를 바랬다. 내'external.js'에 정의 된'var PK = {}'이 있습니다. 그것은 스크립트 태그를 통해 메인 html 파일에로드됩니다. 동일한 html 파일에서'PK.vars.uris'의 값은'$ (document) .ready (function()'으로 초기화됩니다. 초기화 된 값이'외부에서'var PK '에 사용 가능하도록하고 싶습니다. js' – punkish