/ / CoffeeScriptクラスとjQuery - jquery、ruby-on-rails-3、coffeescript

CoffeeScriptクラスとjQuery - jquery、ruby-on-rails-3、coffeescript

私は、オーディオプレーヤーとのやりとりのためのクラスを書いているCoffeeScriptファイルを持っていますが、なんらかの理由で、Railsアプリケーション内の別のcoffeeScriptファイルの中でうまく再生できません。

player.coffee:

window.Player = ->
constructor: (@player_id = "player") ->
jw = {
"flashplayer":"<%= asset_path("player.swf") %>"
"controlbar": "top"
"autostart": "false"
"width":"400"
"height":"49"
"playlist": "[]"
"skin":"<%= asset_path("awardfm.zip") %>"
"dock":"false"
"wmode":"transparent"
}
jwplayer(@player_id).setup(jw);

play: (track_data) ->
console.log track_data

player_interactions.coffee

$ ->
jw = window.Player "player" || {}
$(".play").click ->
jw.play("test")

私はこのエラーが続いている: Uncaught ReferenceError: Player is not defined

上記のサンプルコードを使用して作業しています

回答:

回答№1は16

クラスをグローバルにアドレス可能にするには、クラスの名前の前に "@"をつけてください(あなたがクロージャの中にある場合を除いて、 "window"という接頭辞を付ける必要はありませんが、とにかくそれをやりたいとは思わないでしょう)。

player.coffee

class @Player
constructor: (@player = "player") ->
...

play: (track_data) ->
...

player_interactions.coffee

jw = new Player

回答№2については2

別のコーファースクリプトファイルから関数にアクセスするには、その関数を最上位ウィンドウオブジェクトにアタッチしてからファイル内で参照し、 window.MyClass