我正在尝试将“ this.dishes”设置为与在类的构造中调用API所获得的结果相等,但是却收到错误消息,提示“未捕获的TypeError:无法设置未定义的属性'dishes' ”。基本上由于某种原因,“ this”关键字是未定义的,因此无法分配该值。
我的构造函数是:
class DinnerModel {
constructor() {
this.getAllDishesfromAPI(function(err,result){
if(err){
console.log(err);
}
else{
console.log(result);
this.dishes = result;
}
});
}
我的api函数是:
getAllDishesfromAPI(callback){
let URL = "some url";
let xhr = new XMLHttpRequest();
xhr.open("GET", URL, true);
xhr.setRequestHeader("X-Mashape-Key", "xxxx");
xhr.send();
xhr.onload = function() {
if (xhr.status != 200) { // analyze HTTP status of the response
callback(xhr.status,null);
} else { // show the result
// this.dishes = xhr.response;
callback(null,xhr.response);
}
};
xhr.onerror = function() {
callback(xhr.status,null);
};
}
}
由于某种原因,我可以在this.dishes
函数之外为callback
分配任何值。