私はJavascriptのプロトタイプのアイデア全体にかなり慣れていません.これまでに収集したものから、それは基本的に新しいオブジェクトを作成するためのテンプレートです.
とにかく、「PageObject」の子であるオブジェクト「Schedule」があります。以下は、Schedule オブジェクトの関数です。
Schedule.prototype.serviceSuccessFunction = function(data, status, xqr) {
var ld;
ld = Schedule.__super__.serviceSuccessFunction.call(this, data, status, xqr);
ld.done($.proxy(function(x) {
return console.log(this);
}, this));
ld.done($.proxy(this.render, this));
return ld.done($.proxy(this.modernizeAndShow, this));
};
PageObject の関数は次のようになります (その子から呼び出されます)。
PageObject.prototype.serviceSuccessFunction = function(data, status, xqr) {
$.mobile.loading("show");
return $.when($.mobile.loadPage("pages/" + this.url, {
pageContainer: $("#" + this.loadOptions.loadSection)
}));
};
ご覧のとおり、PageObject は、このモバイル ページの読み込み時に延期されたオブジェクトを返しています。次に、Schedule オブジェクトにカスタム .done() 関数を含めます。これらの完了した関数は、「データ」パラメーターが何であるかに基づいてレンダリングされます。
この「データ」パラメーターは、別の遅延オブジェクト ($.ajax を使用) から取得されます。Schedule success 関数の最初の行でブレークポイントを設定すると、"data" に ajax 呼び出しが返したものが適切に入力されます。
今私の問題は、データをパラメーターとして Schedule で別の関数を呼び出すか、Schedule オブジェクト自体にデータを保存できるようにすることです。これらの関数にデータ オブジェクトをどのように渡すと思いますか?
行にブレークポイントをreturn console.log(this);
付けると、$.proxy のおかげで、"this" が Schedule オブジェクトになります。しかし、「データ」を見つけることができません(これは理にかなっていると思います)。理想的には、「データ」をパラメーターとして渡し、次のようなことをしたいと思います
ld.done($.proxy(function(data) {
this.rData = data;
}, this));
ただし、上記の「データ」または「x」は、.ajax 呼び出しの URL にすぎません。