2012-04-01 3 views
0

Dies könnte sich als ein dummer Tippfehler herausstellen, aber nur wenn es einen Gotcha gibt. Ich beginne gerade mit CoffeeScript in Rails-Anwendung.Initialize coffeescript (Backbone) Klasse aus HTML

habe ich eine Klasse PeopleView in people.js.coffee:

class PeopleView extends Backbone.View 
.... 

ich es von HTML-Datei zu initialisieren versuchen:

<script language="text/javascript"> 
    $(document).ready(function() { 
     var view = new PeopleView(); 
    }); 
</script> 

Ich erhalte eine Fehlermeldung, dass PeopleView nicht definiert . Ich kann in der kompilierten application.js sehen, dass PeopleView definiert ist. Gibt es etwas, das getan werden muss, um Klassen außerhalb der coffeescript-Datei zu initialisieren?

- Bearbeiten

Ich habe gerade bemerkt, dass es funktioniert am unteren Rande der people.js.coffee Datei

window.PeopleView = PeopleView 

Eingabe machen. Ist das eine gute Methode?

+0

ja, und es hilft auch beim Testen Ihres Codes in der Browser-Konsole. –

Antwort

1
window.PeopleView = PeopleView 

Ja, das ist die richtige Methode. CoffeeScript-Code wird in einen anonymen Funktionsaufruf kompiliert, sodass alle Deklarationen auf den Gültigkeitsbereich dieser Funktion beschränkt sind, es sei denn, Sie machen sie im äußeren Gültigkeitsbereich sichtbar, indem Sie sie einer Fenstereigenschaft zuweisen.

Dies verhindert das versehentliche Überschreiben von globalen Variablen.