我有一些代码正在读取xml然后解析数据。
所以这里是代码:
data = [];
ngOnInit() {
this.myService.getData().subscribe(XMLResult => {
const parseString = require('xml2js').parseString;
parseString(XMLResult, function (err, result) {
console.dir(result.listResponse.instance); // Returns Array
this.data = result.listResponse.instance; // Here's the line giving me the error
});
});
}
Console.log正在返回如下数据:
Array(10)
0:
$: {id: "23" name: "name 1"}
1:
$: {id: "45" name: "name 2"}
等
如何解决此问题?
答案 0 :(得分:2)
在您当前的方法中,this
不再引用您的组件了。
修改你的回调以使用箭头功能,这样你就不会失去范围:
parseString(XMLResult, (err, result) => {
console.dir(result.listResponse.instance);
this.data = result.listResponse.instance;
})
在箭头函数之前,每个新函数都定义了自己的这个值 (构造函数中的新对象,在严格模式下未定义) 函数调用,如果函数被调用为基础对象 "对象方法"等)。事实证明这不太理想 面向对象的编程风格。