2011-10-13 88 views
3

我有一個CoffeeScript文件,我在其中編寫一個與音頻播放器進行交互的類,但由於某種原因,我無法在我的Rails應用程序中使用另一個coffeeScript文件進行播放。CoffeeScript類和jQuery

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

它現在與上面的代碼示例工作

回答

16

若要使類全局尋址你應該前綴類的名稱「@」(除非你在關閉中,在這種情況下,你需要用「窗口」作爲前綴),但是你可能不想這樣做)。

player.coffee

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

    play: (track_data) -> 
     ... 

player_interactions.coffee

jw = new Player 
2

從一個CoffeeScript的文件訪問功能在另一個附加功能在頂層窗口對象,然後在文件中引用它,window.MyClass