新手在这里(第一个有角度的第2天)
我有一个包含3个字段的类:id
和name
,它们被传递给构造函数,第三个字段名为data
,它应该接收JSON文件的内容
export class Hero {
id: string;
name: string;
data: Object;
constructor(id: string, name: string) {
this.id = id;
this.name = name;
//retrieve JSON and assign it to this.data
var request = new XMLHttpRequest();
request.onload = function(){
var result = JSON.parse(this.responseText);
this.data = result;
};
//get the json file according to the object id
request.open("get", id+".json", true);
request.send();
}
}
然后我像这样实例化对象
new Hero("hero1", "Hero 1");
问题是指令this.data = result;
不起作用,因为this
引用了请求对象,而不是类。
另外,我不知道这是否是正确的继续(以及获取json文件)的方法。我仍然非常迷失于angular2。感谢
答案 0 :(得分:1)
使用箭头功能
request.onload = () => {
var result = JSON.parse(this.responseText);
this.data = result;
};
答案 1 :(得分:1)
您还可以执行以下操作:
export class Hero {
id: string;
name: string;
data: Object;
constructor(id: string, name: string) {
this.id = id;
this.name = name;
let request = new XMLHttpRequest();
request.onload = this.onDataRecieved.bind(this, request);
request.open("get", id + ".json", true);
request.send();
}
private onDataRecieved(request: XMLHttpRequest): void {
let result = JSON.parse(request.responseText);
this.data = JSON.parse(result);
}
}