簡體   English   中英

coffeescript和流星變量范圍問題

[英]coffeescript and meteor variable scoping issue

我在流星上使用coffeescript,我認為范圍有問題。

我的應用程序繪制了一個平面圖,我正在嘗試在其上覆蓋一個熱圖(使用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

coffeescript.org指出:

  • 作為此屬性的快捷方式,您可以使用@property。

在的CoffeeScript假設這樣在JavaScript, 是函數上下文,並且將針對每個功能不同。 實際上,您永遠不會在全局范圍內設置您創建的變量,因為它始終被對象表示的函數上下文掩蓋。

嘗試將@heatmap(無處不在)更改為熱圖,看看是否可以解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM