我目前正在使用JavaScript模块运行一些测试,遗憾的是,在尝试设置mychart对象的属性setOption时出现Uncaught TypeError错误。这作为参数传递给另一个模块中的类。当前代码如下所示:
App.js
import { echart, theme, option } from './module-chart';
import { ChartController } from './module-chart-controller';
let mychart = echart.init(document.getElementById('main'), theme);
mychart.setOption(option);
let chartController = new ChartController(mychart);
chartController.animateChart();
模块图表-controller.js
class ChartController{
constructor(chart){
this.mychart = chart;
}
animateChart() {
let intervalo = setInterval(function() {
concentrationOfAandB = getObjectConcentrationOfAandB();
dataA.push(concentrationOfAandB.concentrationOfA);
dataB.push(concentrationOfAandB.concentrationOfB);
this.mychart.setOption({
series: [{
data: dataA,
animationDuration: 1000
},
{
data: dataB,
animationDuration: 1000
}
]
});
}, 1900);
setTimeout(function() {
clearInterval(intervalo);
}, 40000);
}
}
export {ChartController};
当我在App.js文件中传递module-chart-controller.js代码时,不会发生错误。
控制台上显示以下错误消息:未捕获TypeError:无法读取属性' setOption'未定义。在module-chart-controller.js文件中指出错误
提前感谢您的关注!
答案 0 :(得分:0)
您需要bind
请求分配给this
的属性的方法,因此该方法可以访问它们。您需要执行setInterval
功能,它需要访问this
,因此您也需要bind
。
constructor(chart){
this.mychart = chart;
this.animateChart = this.animateChart.bind(this);
}
animateChart() {
let intervalo = setInterval(function() {
concentrationOfAandB = getObjectConcentrationOfAandB();
dataA.push(concentrationOfAandB.concentrationOfA);
dataB.push(concentrationOfAandB.concentrationOfB);
this.mychart.setOption({
series: [{
data: dataA,
animationDuration: 1000
},
{
data: dataB,
animationDuration: 1000
}]
});
}.bind(this), 1900);
setTimeout(function() {
clearInterval(intervalo);
}, 40000);
}