我正在使用coffeescript和meteor,我认为我在确定范围方面存在问题。
我的应用程序绘制了一个平面图,我试图在它上面叠加一个热图(使用h337)。
@heatmap = null
initHeatMap = ( layer_name ) ->
console.log 'creating heatmap on %s', layer_name
h337.create
container: document.querySelector layer_name
gradient:
0.2: 'green'
0.5: 'orange'
0.8: 'red'
radius: 11
maxOpacity: 1.0
minOpacity: 0.6
blur: 0.6
drawHeatMap = ( metric ) ->
@heatmap.setData
max: 50
min: 0
data: regenData metric
redraw = ( metric ) ->
console.log 'redraw: %o', @heatmap
drawHeatMap metric
Template.sensor_list.rendered = () ->
@heatmap = initHeatMap '.heatmap'
console.log 'created map: %o', @heatmap
redraw 'temp'
基本上,我从chrome开发人员工具控制台看到的是:
creating heatmap on .heatmap
created map: Heatmap
redraw: null
为什么redraw()
声称@heatmap
仍然是null
?
答案 0 :(得分:0)
假设这个在coffeescript中就像是这个在javascript中,这个是函数上下文,并且对于每个函数都是不同的。您永远不会实际设置您在全局范围内创建的变量,因为它始终被此对象所表示的函数上下文屏蔽。
尝试更改@heatmap(无处不在)以热图并查看是否可以解决它。