这是我的代码库
export class myComponent implements OnInit {
minHist;
maxHist;
}
public callAmcharts(whichFilterType:String){
this.amchart = AmCharts.makeChart( "chart", {
"type": "serial",
"theme": "light",
"dataProvider": this.TrendData,
"valueAxes": [ {
"gridColor": "#FFFFFF",
"gridAlpha": 0.2,
"dashLength": 0
}],
"gridAboveGraphs": true,
"startDuration": 1,
"graphs": [ {
"balloonText": "[[category]]: <b>[[value]]</b>",
"fillAlphas": 0.8,
"lineAlpha": 0.2,
"type": "column",
"valueField": "dCount",
"showHandOnHover":true
} ],
"chartCursor": {
"categoryBalloonEnabled": false,
"cursorAlpha": 0,
"zoomable": false
},
"categoryField": "dRange",
"categoryAxis": {
"gridPosition": "start",
"gridAlpha": 0,
"tickPosition": "start",
"tickLength": 20,
"labelRotation": 45
},
"export": {
"enabled": true
}
});
this.amchart.addListener("clickGraphItem",this.myfunc);
}
现在onclick事件myfunc
正在被调用。但奇怪的是我无法使用this
访问那里的任何全局变量。如果是scope
问题,那么在调用myfunc
时也会出错:
public myfunc(e:any){
var range= e.item.category;
let range_arr = range.split("-");
this.minHist=range_arr[0];
this.maxHist=range_arr[1];
}
我收到错误Uncaught TypeError: Cannot set property 'minHist' of undefined
答案 0 :(得分:1)
更改
this.amchart.addListener("clickGraphItem",this.myfunc);
到
this.amchart.addListener("clickGraphItem",this.myfunc.bind(this));
根据您的输入,这也可以起作用:
this.amchart.addListener("clickGraphItem",(e)=> this.myfunc(e));
这是更短的版本:
this.amchart.addListener("clickGraphItem",(e)=> { return this.myfunc(e); });
建议阅读:How to access the correct `this` context inside a callback?