私は ParentObject.doSomething() を呼び出しています。これは、WebService オブジェクトを呼び出していくつかの ajax 呼び出しを実行し、ajax 呼び出しが成功すると、コールバック関数が実行されます。ただし、コールバック関数内の親関数は失敗します。
これはスコープの解像度と関係があると思います。この問題の回避策が見つかりません。
ajax サービスとモデルをモジュール化するためのより良いアーキテクチャ スタイルはありますか?
私もjsfiddleを作成しました - http://jsfiddle.net/bzKXr/2/
var ParentObject = {
doSomething: function(){
document.write("Inside doSomething <br />");
var self = this;
WebServices.firstService("some URL", self.successCallback);
},
changeData: function(data){
//Manipulate data
document.write("Inside changeData <br />");
},
successCallback: function(jsonData){
document.write("Inside successCallback <br />");
try {
//Execution fails at this point. Possibly because of scope resolution
this.changeData(jsonData);
}
catch (error) {
console.log(error);
document.write(error);
}
},
};
var WebServices = {
firstService: function(url, successCallbackHandler){
document.write("Inside firstService <br />");
//Get data using the URL
//on success call successCallback
successCallbackHandler("some data");
}
};
$(document).ready(function() {
ParentObject.doSomething();
});