我有这个饼图,可以正确显示正确的数据:
# 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
下找到它。新变量之后是否“消失”了? 最佳答案
pollPieChart
是局部变量,而不是事件的this
上下文上的属性。
在'data:update'
事件侦听器内部,js自动将this
设置为发生事件的元素(document.getElementById('')
)。
只需从回调中this.
之前的pollPieChart
删除即可解决它,因为它是在current closure而不是全局window
对象中定义的。
要将其放置在全局窗口中(尽管此处没有必要),请使用
window.pollPieChart = new Chart(ctx,
type: 'pie'
data: data
animation: animateRotate:true)