【问题标题】:CoffeeScript Class and jQueryCoffeeScript 类和 jQuery
【发布时间】:2011-12-07 06:29:12
【问题描述】:

我有一个 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

现在可以使用上述代码示例

【问题讨论】:

    标签: jquery ruby-on-rails-3 coffeescript


    【解决方案1】:

    要使一个类全局可寻址,你应该在类的名称前加上“@”(除非你在一个闭包中,在这种情况下你需要用“window”作为前缀,但你可能不想这样做无论如何)。

    player.coffee

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

    player_interactions.coffee

    jw = new Player 
    

    【讨论】:

      【解决方案2】:

      要从一个咖啡脚本文件访问另一个函数,请将函数附加到顶层窗口对象中,然后在您的文件中引用它,window.MyClass

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-12
        • 1970-01-01
        • 2012-06-27
        • 2013-01-08
        • 2011-05-16
        • 2013-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多