2012-04-02 13 views
1

erbテンプレート内からこのcoffeescriptメソッドを呼び出すことはできませんか?それは動作していないが、それは必要があるようだ。erbテンプレート内の別のファイル形式で定義されたcoffeesciptメソッドを呼び出す

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

これは理論的にはうまくいくと思います。あなたの例は 'include @'行のせいで実行されません。 'include'はあなたのコードのどこかで定義されていますか? –

+0

はい、私は 'include'を他の場所に定義します。それは問題を引き起こしていません。 – 99miles

答えて

0

あなたSetupStepTwoクラスはresetView呼ばインスタンス方法を持っていますが、としてそれを呼び出すようにしようとしていますクラスメソッド(または(Java | Coffee)スクリプトで少なくともクラスメソッドとして渡されるメソッド)を指定します。

window.ns1.SetupStepTwo.resetView(); 

あなたは本当に、あなたのクラスは、より次のようになりますクラスメソッドとしてresetViewを使用する場合:

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

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

self.classのように、@resetView@は、クラスメソッドを行い、@constructorは、多かれ少なかれRubyで

デモ:http://jsfiddle.net/ambiguous/eDdmd/

あなたはresetViewは、インスタンスメソッドになりたいなら、あなたはこの交換する必要があります:SetupStepTwoのインスタンス上のresetView呼び出しで

window.ns1.SetupStepTwo.resetView(); 

を。

関連する問題