[英]chart.js coffeescript can't find variable
我有这个饼图可以正确显示正确的数据:
# 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
下找不到它。 变量在 new 之后“消失”了吗?
pollPieChart
是一个局部变量,而不是事件的this
上下文的属性。
在'data:update'
事件侦听器中,js 自动将this
设置为发生事件的元素( document.getElementById('')
)。
只需删除this.
在回调中的pollPieChart
之前应该修复它,因为它是在 当前的闭包中定义的,而不是全局window
对象。
要将它放在全局窗口上(尽管这里不需要),请使用
window.pollPieChart = new Chart(ctx,
type: 'pie'
data: data
animation: animateRotate:true)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.