Javascript angular2-将json文件内容获取到my class属性中
这里的新手(第一个angular2天) 我有一个类,它有3个字段:Javascript angular2-将json文件内容获取到my class属性中,javascript,angularjs,json,typescript,angular,Javascript,Angularjs,Json,Typescript,Angular,这里的新手(第一个angular2天) 我有一个类,它有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;
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代码>不起作用,因为此
引用的是请求对象,而不是类
另外,我不知道这是否是正确的方法(以及获取json文件)。我对安格拉尔语还是很迷茫。谢谢改用箭头功能
request.onload = () => {
var result = JSON.parse(this.responseText);
this.data = result;
};
您还可以执行以下操作:
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);
}
}
你为什么不使用http.get()
(不能解决你的实际问题)?@GünterZöchbauer我看到了一些http.get()
的例子,其中http
对象是一个构造函数参数,而实际上我没有得到它。如果我添加它,那么实例newhero(“hero1”,“hero1”)
将不再有效(缺少1个参数)Http
是在添加Http\U提供程序时提供的(在bootstrap()
或AppComponent的提供程序:[…]
。当通过Angular创建组件时,它传递一个Http
实例(服务)您可以使用它来发出请求。另请参见@GünterZöchbauer谢谢,我将尝试此给我错误属性'responseText'在类型'Hero'上不存在。
它应该来自何处。我看不到您的代码中声明或分配的responseText
。我猜您的意思是请求。responseText