Tengo un archivo CoffeeScript en el que estoy escribiendo una clase para interacciones con un reproductor de audio, pero por alguna razón no puedo hacer que funcione bien dentro de otro archivo coffeeScript en mi aplicación 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")
Sigo recibiendo este error:
Uncaught ReferenceError: Player is not defined
Ahora está trabajando con los ejemplos de código anteriores
Respuestas
16 para la respuesta № 1Para hacer una clase globalmente direccionable, deberíasprefija el nombre de la clase con "@" (a menos que esté dentro de un cierre, en cuyo caso debe agregarle un prefijo "ventana", pero probablemente no desee hacerlo de todos modos).
player.coffee
class @Player
constructor: (@player = "player") ->
...
play: (track_data) ->
...
player_interactions.coffee
jw = new Player
2 para la respuesta № 2
Para acceder a una función desde un archivo de coffeescript en otro, adjunte la función en el objeto de la ventana de nivel superior y luego hágalo referencia en su archivo, window.MyClass