2012-04-02 4 views
1

Kann ich diese coffeescript-Methode nicht innerhalb einer erb-Vorlage aufrufen? Es funktioniert nicht, aber es scheint so zu sein.coffeezipt-Methode in einer anderen Dateiform innerhalb einer erb-Vorlage aufrufen

setup.js.coffee

class SetupStepTwo 

    include @ 

    constructor: -> 
    @resetView() 

    resetView : -> 
    console.log('cool'); 

window.ns1.SetupStepTwo = SetupStepTwo 

$ -> 
    new SetupStepTwo() 

update.js.erb

window.ns1.SetupStepTwo.resetView(); 
+0

Ich denke, das sollte in der Theorie funktionieren. Ihr Beispiel wird wegen dieser 'include @' Zeile nicht ausgeführt. Ist 'include' an anderer Stelle in Ihrem Code definiert? –

+0

Ja, ich definiere 'include' woanders. Das verursacht keine Probleme. – 99miles

Antwort

0

Ihre SetupStepTwo Klasse hat eine Instanz Methode namens resetView aber Sie versuchen, es als ein zu nennen Klasse Methode (oder zumindest, was als Klassenmethode in (Java | Coffee) Skript übergeben), wenn Sie dies sagen:

window.ns1.SetupStepTwo.resetView(); 

Wenn Sie wirklich wollen resetView als Klassenmethode verwenden, dann die Klasse eher wie dieses aussehen:

class SetupStepTwo 
    constructor: -> 
    @constructor.resetView() 

    @resetView : -> 
    console.log('cool') 

Die @ auf @resetView macht eine Klassenmethode und @constructor ist, mehr oder weniger, wie self.class in Rubin.

Demo: http://jsfiddle.net/ambiguous/eDdmd/

Wenn Sie resetView wollen Methode eine Instanz sein, dann müssen Sie diese ersetzen:

window.ns1.SetupStepTwo.resetView(); 

mit einem resetView Anruf auf einer Instanz von SetupStepTwo.

Verwandte Themen