tutorial react objects loop for coffeescript

react - coffeescript wikipedia



Ejecutar una clase de CoffeeScript en document.ready (4)

class Main

Pruebe la class @Main en class @Main lugar.

obv Main.test (); no funciona

Derecha. Debe ser new Main().test() o Main::test() .

¿coffeescript se ejecuta después de document.ready de todos modos?

Suponiendo que lo esté ejecutando a través de extras/coffee-script.js y utilizando jQuery, sí.

yo tengo

class Main test:-> alert "yay!"

en coffeescript, y quiero ejecutarlo dentro de mi index.html

<script> $(function(){ //and obv Main.test(); doesn''t work }); </script>

Hay una nota de esto en el sitio web, dice que no funcionaría. Pero no pude encontrar cómo hacerlo funcionar. ¿algunas ideas? Necesito averiguar qué es el contenedor de cierre de coffeescript.

o se ejecuta coffeescript después de document.ready de todos modos?

¡Gracias!


Coffeescript envuelve su código en una llamada de función para que no pueda sobrescribir accidentalmente variables globales.

Si desea que las variables, funciones o clases sean globales (para que otros archivos puedan acceder a ellas), debe hacer que sean globales de forma explícita adjuntándolas a this o window .

# Stays within the function scope, so you can''t access it outside the file myNotGlobalFunction -> return # Attaches it to `this` aka `window`, so can be accessed globally this.myGlobalFunction -> return # A shortcut using @ which is an alias to `this.` @myOtherGlobalFunction -> return

Esto compila a:

(function() { myNotGlobalFunction(function() { return; }); this.myGlobalFunction(function() { return; }); this.myOtherGlobalFunction(function() { return; }); }).call(this);


Para ejecutar Coffeescript después de document.ready puedes usar jQuery así:

$ -> # Put your function code here init()

Lo que está haciendo es ejecutar jQuery (function () {callback ...}) como la tercera sección en este enlace: http://api.jquery.com/jQuery/

Lo que básicamente dice esto:

jQuery (devolución de llamada) Devuelve: jQuery Descripción: enlaza una función que se ejecutará cuando el DOM haya terminado de cargarse.

Declaro todas mis clases, etc. fuera del documento y luego invoco una función de inicio para que se ejecute en el momento adecuado.

¡Espero que eso ayude!


También me he encontrado con este problema antes. Primero que todo, ya que estás definiendo una clase, necesitas instanciarla. Entonces puedes llamar a tu función de test en la instancia:

<script> $(function(){ var an_instance_of_main = new Main(); an_instance_of_main.test(); }); </script>

Sin embargo, es posible que haya notado que el navegador no puede encontrar su clase Main . Esto se debe a que cuando se compila CoffeeScript, envuelve una función de ejecución automática alrededor de la definición de su clase para evitar que Main sea ​​accesible globalmente. Si desea que sea accesible globalmente, puede prefijarlo con la ventana:

class window.Main test:-> alert "yay!"

o asignarlo después de definirlo:

class Main test:-> alert "yay!" window.Main = Main