angular2 - 将json文件内容添加到我的class属性中

时间:2016-07-21 13:33:45

标签: javascript angularjs json typescript angular

新手在这里(第一个有角度的第2天)

我有一个包含3个字段的类:idname,它们被传递给构造函数,第三个字段名为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。感谢

2 个答案:

答案 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);
    }
}