我有一个x
类对象C
。该属性x.myval
应通过调用来设置,而调用x.load()
又应从异步 ajax 调用中获取其数据。
class C {
constructor() {
this.myval = "hello";
}
load() {
return $.ajax({
type: "GET",
url: "file.txt",
// suppress "xml not well-formed error in firefox",
beforeSend: function(xhr){
if (xhr.overrideMimeType) { xhr.overrideMimeType("text/plain"); }
},
contentType: "text/plain",
dataType: "text",
success: function(text) {
this.myval = text;
}
});
}
}
var x = new C();
$.when(x.load()).done(function(a1,a2) {
console.log(x.text); //should print the content of file.txt
});
我得到一个错误this.myval is undefined
,显然是因为this
设置为this
jquery- $
。
我也试过:
class C {
constructor() {
this.myval = "hello";
}
load() {
var callback = function callbackClosure(mythis) {return function(text) {
this.myval = text;
}}(this);
return $.ajax({
type: "GET",
url: "file.txt",
// suppress "xml not well-formed error in firefox",
beforeSend: function(xhr){
if (xhr.overrideMimeType) { xhr.overrideMimeType("text/plain"); }
},
contentType: "text/plain",
dataType: "text",
success: callback
});
}
}
var x = new C();
$.when(x.load()).done(function(a1,a2) {
console.log(x.text); //should print the content of file.txt
});
但这特雷特例外jQuery.Deferred exception: assignment to undeclared variable...