/ / CoffeeScript Class und jQuery - jquery, ruby-on-rails-3, Kaffeescript

CoffeeScript Class und jQuery - Jquery, Ruby-on-Rails-3, Kaffeescript

Ich habe eine CoffeeScript-Datei, in der ich eine Klasse für Interaktionen mit einem Audio-Player schreibe, aber aus irgendeinem Grund kann ich sie nicht in einer anderen coffeeScript-Datei in meiner Rails-App abspielen.

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

Ich bekomme diesen Fehler immer wieder: Uncaught ReferenceError: Player is not defined

Es arbeitet nun mit den obigen Codebeispielen

Antworten:

16 für die Antwort № 1

Um eine Klasse global adressierbar zu machen, sollten SieSetzen Sie den Namen der Klasse mit "@" voran (es sei denn, Sie befinden sich in einer Closure. In diesem Fall müssen Sie ihm "window" voranstellen, aber das möchten Sie wahrscheinlich sowieso nicht).

player.coffee

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

play: (track_data) ->
...

player_interactions.coffee

jw = new Player

2 für die Antwort № 2

Um auf eine Funktion von einer Coffeescript-Datei in einer anderen zuzugreifen, hängen Sie die Funktion in das Top-Level-Fensterobjekt an und referenzieren Sie sie in Ihrer Datei. window.MyClass