Frage

ich habe

class Main
   test:->
      alert "yay!"

in Coffeescript, und ich möchte, dass in meinem index.html

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

gibt es eine Notiz von diesem auf der Website heißt es, es nicht funktionieren würde. Aber ich konnte nicht finden, wie es funktioniert. irgendwelche Ideen? Ich brauche, um herauszufinden, was Coffeeverschluss Wrapper ist.

oder tut nach Coffee document.ready trotzdem durchführen?

thx!

War es hilfreich?

Lösung

class Main

Versuchen class @Main statt.

Vs. Main.test (); nicht funktioniert

Richtig. Sollte sein new Main().test() oder Main::test().

hat nach Coffee document.ready trotzdem durchführen?

Unter der Annahme, dass Sie es sind die Ausführung über Extras / Kaffee- script.js und mit jQuery, ja.

Andere Tipps

Coffeescript auszuführen, nachdem document.ready Sie jQuery wie folgt verwenden können:

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

Was die jQuery läuft tut (function () {...} Rückruf) wie der dritte Abschnitt unter diesem Link: http://api.jquery.com/jQuery/

, die im Grunde sagt diese:

jQuery (Rückruf) Returns: jQuery Beschreibung:. Wird eine Funktion ausgeführt wird, wenn der DOM fertig geladen hat

Ich erkläre alle meine Klassen, etc. außerhalb des Dokuments bereit und dann eine init-Funktion aufrufen, um es zu gegebener Zeit zum Laufen bringen.

Ich hoffe, das hilft!

Coffee hüllt Ihren Code in einem Funktionsaufruf, so dass Sie nicht versehentlich überschreiben globale Variablen.

Wenn Sie alle Variablen wollen, Funktionen oder Klassen global sein (so können sie von anderen Dateien zugegriffen werden), müssen Sie explizit auf sie global machen, indem sie this oder window anbringen.

# 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

Dies kompiliert zu:

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

Ich habe vor als auch in dieser Frage laufen. Vor allem, da Sie eine Klasse definieren, müssen Sie es instanziieren. Dann können Sie rufen Sie Funktion auf der Instanz test:

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

Allerdings haben Sie vielleicht bemerkt, dass der Browser nicht Ihre Main Klasse finden. Dies liegt daran, wenn das Coffeescript kompiliert wird, ist es eine selbstausführende Funktion um Ihre Klassendefinition, um hüllt Main zu verhindern, dass global zugänglich zu sein. Wenn Sie es global zugänglich machen möchten, können Sie es mit Fenster-Prefix:

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

oder weisen Sie es nach der Definition:

class Main
   test:->
      alert "yay!"

window.Main = Main
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top