我正在使用dashing框架来创建一个小部件。基本上,它使用 sinatra、batman 和 coffee 脚本来创建仪表板。
我的代码基于这个小部件
我有以下代码
咖啡脚本
class Dashing.Countdown extends Dashing.Widget
ready: ->
setInterval(@startCountdown, 500)
startCountdown: =>
color_available
current_timestamp = Math.round(new Date().getTime()/1000)
end_timestamp = Math.round( Date.parse($(@node).find(".more-info").html())/1000 )
seconds_until_end = end_timestamp - current_timestamp
if @get('title') > 'Busy'
# @set('title', 'herpin the derpin')
color_available = true
else
color_available = false
...truncated for readability
@accessor 'isAvailable', ->
true
html
<div class="gridster">
<ul>
<li data-row="1" data-col="1" data-sizex="2" data-sizey="1">
<div
data-id="pomodoro"
data-view="Countdown"
data-title="Herp the Derp"
data-end=""
data-addclass-available='isAvailable'>
</div>
</li>
</ul>
</div>
如果访问器 'isAvailable' 函数返回 true,则应用 'available' css 类,它将 div 的颜色按预期从红色变为蓝色。
但是,如果我将访问器函数从“真”更改为变量,它会说它是未定义的。
....
@accessor 'isAvailable', ->
color_available?
从我对谷歌和堆栈溢出的研究来看,问题似乎是一个范围问题。
我尝试将 color_available 变量的每个实例更改为全局范围,但没有成功。
@color_available
我也尝试将 color_available 添加到窗口
window.color_available = color_available
谁能指出为什么 color_available 未定义?我是 javascript/coffeescript 的新手,我有点不知所措。
资源
如何在 CoffeeScript 中定义全局变量?
https://donatstudios.com/CoffeeScript-Madness
更新
我忘了提一下,我已经尝试了以下方法来初始化变量。
startCountdown: =>
color_available
startCountdown: =>
@color_available
color_available
startCountdown: =>
color_available = null
startCountdown: =>