/ / CoffeeScript trieda a jQuery - jquery, rubín-na-koľajnice-3, coffeescript

CoffeeScript trieda a jQuery - jquery, rubín-na-koľajnice-3, coffeescript

Mám súbor CoffeeScript, v ktorom píšem triedu pre interakcie s audio prehrávačom, ale z nejakého dôvodu sa mi to nedarí hrať pekne vo vnútri iného súboru coffeeScript v aplikácii 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")

Trval som túto chybu: Uncaught ReferenceError: Player is not defined

Teraz pracuje s vyššie uvedenými kódovými vzorkami

odpovede:

16 pre odpoveď č. 1

Ak chcete, aby bola trieda globálne adresovateľná, mali by steprefixujte názov triedy s "@" (pokiaľ nie ste v uzávierke, v takom prípade musíte predponu s "oknom", ale pravdepodobne by ste to nechceli tak urobiť).

player.coffee

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

play: (track_data) ->
...

player_interactions.coffee

jw = new Player

2 pre odpoveď č. 2

Ak chcete získať prístup k funkcii z jedného súboru coffeescript do iného, ​​pripojte funkciu do objektu najvyššej úrovne okna a potom ho v súboru odkazujte, window.MyClass