我正在使用AmCharts 3,我想知道有没有办法捕获一个事件来点击周期选择器的按钮?
The Docs状态我可以将一个监听器添加到“已更改”类型的句点选择器中,但随后该事件几乎可以随时运行
有一个'缩放'的监听器,但每当我缩放图表时它都会运行,无论我单击时段选择器
这是我的尝试:
chart = AmCharts.makeChart(scope.vm.chartId, chartSettings);
AmCharts.addInitHandler(function () {
// add events to item
_.each(chart.panels, function (item) {
//item.addListener("zoomed", onZoomed);
item.addListener("changed", function(e) {
console.debug("changed " + e.periodString);
});
});
});
答案 0 :(得分:4)
您可以使用句点选择器changed
事件。
即:
var chart = AmCharts.makeChart( "chartdiv", {
"type": "stock",
// ...
"periodSelector": {
"position": "left",
"periods": [ {
"period": "MM",
"selected": true,
"count": 1,
"label": "1 month"
}, {
"period": "YYYY",
"count": 1,
"label": "1 year"
}, {
"period": "YTD",
"label": "YTD"
}, {
"period": "MAX",
"label": "MAX"
} ],
"listeners": [ {
"event": "changed",
"method": function( event ) {
if ( event.predefinedPeriod !== undefined ) {
console.log( event.predefinedPeriod, event.count );
}
}
} ]
},
// ...
} );
请注意,使用日期输入字段更改日期时也会执行此事件,因此请检查是否已定义event.predefinedPeriod
。
还请记住,在图表初始化中也选择了默认期间。因此,首次加载图表时将触发此事件,而无需任何用户交互。
这里是working demo。
答案 1 :(得分:1)
由于您是通过配置对象发起的,我建议您使用新的“听众”#39;最新版本的AmCharts支持的属性,用于向chartSettings对象上的periodSelector对象添加事件处理程序。它应该工作。