Amcharts“ TypeError:this.chart.zoomToDates不是函数”

时间:2018-07-30 07:05:39

标签: javascript amcharts amstock

我正在尝试遵循this入门知识来创建外部缩放控件。

我有3个按钮

  <v-btn v-on:click="showPeriod('1 month')">1 month</v-btn>
  <v-btn v-on:click="showPeriod('3 month')">3 month</v-btn>
  <v-btn v-on:click="showPeriod('6 month')">6 month</v-btn>

eventListener showPeriod

  showPeriod: function(period) {
    console.log("Periods", this.periods)
    if (period != 'All'){
      this.changeDataZoom(this.periods[period])
    }
    else {
      //Logic fot 'ALL' period
    }
  },

  changeDataZoom: function (rawPeriod) {
    let regex = /([0-9]{2,4}[\-][0-9]{2}[\-][0-9]{2}).*?/g
    let periods = []

    rawPeriod.match(regex).forEach(function (period) {
      periods.push(moment(period,"YYYY-MM-D").format("YYYY-MM-DD"))
    })

    //Periods ["2018-01-26", "2018-07-27"]
    this.chart.zoomToDates(periods[0], periods[1])
  },

但是当我尝试调用this.chart.zoomToDates时,出现错误“ TypeError:this.chart.zoomToDates不是函数”

我还尝试使用AmCharts.stringToDate将字符串转换为日期,但这也无济于事。 Link重现错误

P.S。我知道periods属性-但是在这种情况下1个月实际上不是日历月,因此我需要手动指定日期。

1 个答案:

答案 0 :(得分:2)

该Codepen使用序列图表,而您使用的是库存图表。

序列图具有方法zoomToDates

  

zoomToDates(开始,结束)
  开始-开始日期,日期对象\结束-结束日期,日期对象


股票图表的方法为zoom

  

zoom(startDate,endDate)
  startDate,endDate-日期对象

因此,您需要类似的东西:

changeDataZoom: function (rawPeriod) {
    let regex = /([0-9]{2,4}[\-][0-9]{2}[\-][0-9]{2}).*?/g
    let periods = []

    rawPeriod.match(regex).forEach(function (period) {
      periods.push(moment(period,"YYYY-MM-D").format("YYYY-MM-DD"))
    })

    //Periods ["2018-01-26", "2018-07-27"]
    this.chart.zoom(new Date(periods[0]), new Date(periods[1]))
}