CoffeeScript类和jQuery

den*_*icz 3 jquery coffeescript ruby-on-rails-3

我有一个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
Run Code Online (Sandbox Code Playgroud)

player_interactions.coffee

$ ->
    jw = window.Player "player" || {}
    $('.play').click ->
        jw.play('test')
Run Code Online (Sandbox Code Playgroud)

我一直收到这个错误: Uncaught ReferenceError: Player is not defined

它现在使用上面的代码示例

Ped*_*der 16

要使类具有全局可寻址性,您应该在类的名称前面添加"@"(除非您在闭包内,在这种情况下,您需要在其前面添加"window".但您可能不希望这样做) .

player.coffee

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

    play: (track_data) ->
        ... 
Run Code Online (Sandbox Code Playgroud)

player_interactions.coffee

jw = new Player 
Run Code Online (Sandbox Code Playgroud)