[英]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.