chart.js coffeescript无法找到变量

时间:2016-09-13 16:25:34

标签: javascript coffeescript chart.js

我有一个正确显示正确数据的饼图:

  # setup the pieChart
  if ($( "#pieChart" ).length)
    poll_labels = []
    poll_data = []
    poll_colors = []
    $('.option_text').each (i, obj) ->
      poll_labels.push($( obj ).text())
      return
    $('.nb_votes').each (i, obj) ->
      poll_data.push($( obj ).text())
      poll_colors.push('#' + Math.floor(Math.random() * 16777215).toString(16))
      return
    data =
      labels: poll_labels
      datasets: [ {
        data: poll_data
        backgroundColor: poll_colors
        hoverBackgroundColor: poll_colors
      } ]

    ctx = document.getElementById('pieChart')
    pollPieChart = new Chart(ctx,
      type: 'pie'
      data: data
      animation: animateRotate:true)

    $('#pieChart').on 'data:update', (event, data_id, data) ->
      $('.answer_option').each (i, obj) ->
        if($( obj ).attr('id') == ("option_" + data_id))
          this.pollPieChart.data.datasets[0].data[i] = data
      this.pollPieChart.update()

但是,data:update事件无法找到pollPieChart变量来更新它? 它不在window.pollPieChart,我无法在pollPieChart下找到它。变量" disapear"在新的?

之后

1 个答案:

答案 0 :(得分:1)

IsDisposed是一个局部变量,而不是事件pollPieChart上下文中的属性。

this事件侦听器中,js会自动将'data:update'设置为事件发生的元素(this)。

只需从回调中的document.getElementById('')之前移除this.即可修复它,因为它是在current closure中定义的,而不是全局pollPieChart对象。

要将其放在全局窗口上(尽管此处不需要),请使用

window