AmCharts,捕获句点选择器的点击事件

时间:2015-10-11 14:05:44

标签: javascript amcharts

我正在使用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);
   });
 });
});

2 个答案:

答案 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对象添加事件处理程序。它应该工作。