繁体   English   中英

JQuery Deferred Ajax,将结果保存在调用对象中

[英]JQuery Deferred Ajax, save result in the calling object

到目前为止,我对Javascript的整个原型概念还很陌生,到目前为止,它基本上是用于创建新对象的模板。

无论如何,我有一个对象“ Schedule”,它是“ PageObject”的子级。 这是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成功函数的第一行上出现断点时,使用ajax调用返回的内容正确填充“数据”。

现在我的问题是我希望能够使用数据作为参数在Schedule中调用其他函数,或者将数据保存在Schedule对象本身上。 您如何将数据对象传递给这些函数?

当我在return console.log(this);上断点时return console.log(this); 行,由于$ .proxy,“ this”是Schedule对象。 但是我找不到“数据”(我认为这很有意义)。 理想情况下,我想将“数据”作为参数传递并执行类似的操作

ld.done($.proxy(function(data) {
  this.rData = data;
}, this));

但是上面的“数据”或“ x”只是.ajax调用的URL。

我可能会误解了,但您不能只放置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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM