我已经声明了一个person对象并在构造函数中定义了一些数组。我在init方法中调用一个方法来获取所有种族。但是我在行中得到了未定义的错误消息" this.person.races.push($(val).attr(" title"));"即使我已经在构造函数中声明它。
export class PersonInvolvedComponent {
person = {}
constructor(private _globalService:GlobalService) {
this.person = {
races: [],
gender: [],
builds: [],
eyeColors: [],
hairColors: []
}
}
ngOnInit() {
this._globalService.applyLanguage("xml/"+this._globalService.getLanguage()+".xml");
this.appendRace();
this.appendGender();
this.appendBuild();
this.appendEyeColor();
this.appendHairColor();
}
appendRace(){
var config = this._globalService.loadConfiguration('config/personConfig.xml');
config.subscribe(
data => {
$(data._body).find("racename").each(function(i,val)
{
this.person.races.push($(val).attr("title"));
}
)},
err => console.error(err),
() => console.log('done')
);
}
}
答案 0 :(得分:3)
将您的调用修改为.each,如下所示:
config.subscribe(
data => {
$(data._body).find("racename").each((i,val) =>
{
this.person.races.push($(val).attr("title"));
}
)},
err => console.error(err),
() => console.log('done')
);
使用关键字function
unscope this
调用匿名函数;使用lambda而不是this
仍然代表你的班级