/ / Klasa CoffeeScript i jQuery - jquery, ruby-on-rails-3, coffeescript

Klasa CoffeeScript i jQuery - jquery, ruby-on-rails-3, coffeescript

Mam plik CoffeeScript, w którym piszę klasę dla interakcji z odtwarzaczem audio, ale z jakiegoś powodu nie mogę go ładnie zagrać w innym pliku cssc w mojej aplikacji Rails.

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")

Wciąż dostaję ten błąd: Uncaught ReferenceError: Player is not defined

Teraz działa z powyższymi próbkami kodu

Odpowiedzi:

16 dla odpowiedzi nr 1

Aby uczynić klasę adresowaną globalnie, powinieneśprefiksuj nazwę klasy przez "@" (chyba, że ​​jesteś w zamknięciu, w którym to przypadku musisz poprzedzić ją "oknem", ale prawdopodobnie i tak byś tego nie zrobił).

player.coffee

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

play: (track_data) ->
...

player_interactions.coffee

jw = new Player

2 dla odpowiedzi nr 2

Aby uzyskać dostęp do funkcji z jednego pliku coffeescript w innym, dołącz funkcję do obiektu okna najwyższego poziomu, a następnie odwołaj go do pliku, window.MyClass