1

私は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 にすぎません。

4

1 に答える 1

0

私は誤解しているかもしれませんがthis.rData = data;、「完了」関数の外に置くことはできません:

Schedule.prototype.serviceSuccessFunction = function(data, status, xqr) {
  var ld;
  ld = Schedule.__super__.serviceSuccessFunction.call(this, data, status, xqr);

  this.rData = data;

  ld.done($.proxy(function(x) {
    return console.log(this.rData);
  }, this));
  ld.done($.proxy(this.render, this));
  return ld.done($.proxy(this.modernizeAndShow, this));
};

その後、デリゲート内で rData を使用できます。

于 2012-09-07T22:06:52.813 に答える