ダッシュフレームワークを使用してウィジェットを作成しています。基本的にはシナトラ、バットマン、コーヒー スクリプトを使用してダッシュボードを作成します。
私のコードはこのウィジェットに基づいています
次のコードがあります
コーヒースクリプト
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 の色が赤から青に変更されます。
ただし、アクセサー関数を「true」から変数に変更すると、未定義であると表示されます。
....
@accessor 'isAvailable', ->
color_available?
Google とスタック オーバーフローに関する私の時間の調査から、問題はスコープの問題のようです。
color_available 変数のすべてのインスタンスをグローバルスコープに変更しようとしましたが、うまくいきませんでした。
@color_available
また、ウィンドウに color_available を追加しようとしました
window.color_available = color_available
color_available が定義されていない理由を誰でも指摘できますか? 私はjavascript / coffeescriptを初めて使用し、少し頭がいっぱいです。
資力
CoffeeScript でグローバル変数を定義するにはどうすればよいですか?
https://donatstudios.com/CoffeeScript-マッドネス
アップデート
変数を初期化するために次のアプローチを試したことを忘れていました。
startCountdown: =>
color_available
startCountdown: =>
@color_available
color_available
startCountdown: =>
color_available = null
startCountdown: =>