2011-09-23 11 views
12

私のメインスクリプトから呼び出している別のファイルにCoffeescriptクラスが定義されている場合は、ファイル内の関数をグローバルに表示できますが、クラスにはできません。Coffeescriptファイルからクラスをエクスポートする

含まれているファイルは以下のとおりです。

root = exports ? this 

root.add = (a, b) -> 

     return a + b 

class root.userModel 
     username: 'Aaaa' 
     name: 'Bbbb' 

私は私のメインのコードから機能にアクセスすることができます。どのようにクラスを作成できますか?

+0

前に「@」を使用してクラスを定義します。私が 'u = new test.userModel()'を呼び出すと 'u'は期待どおりのオブジェクトを含み、オブジェクトは' test.userModel'のインスタンスになります(私がテストに使ったファイルは 'test.coffee 'を読み込み、' test = require '。/ test'') – brandizzi

+0

あなたのお手伝いをありがとう。問題は、コード本体のクラスにアクセスする際に問題があった – tooba

答えて

6

あなたのコードは確かにexportsが未定義であるとthiswindowであると仮定すると、userModelグローバルを行います。問題が発生している場合は、その条件を確認してください。

2

class ...フォームは、値を返す式です。したがって、そのclass式の結果をエクスポートオブジェクトのプロパティに割り当てる必要があります。

root.userModel = class userModel 
    username: 'Aaaa' 
    name: 'Bbbb' 

更新:そうは同様

おっと、ない真、class root.userModelとして、またはroot.userModel = class userModelのいずれかとして正常に動作する必要があります。

+0

そうではなく、 'class root.userModel'は' '' root.userModel =(function(){ function userModel(){...にコンパイルされます。 } return userModel; })(); '' ' –

+0

はい、そうです。レスポンスが速すぎた。いずれにしてもうまくいくはずです。 – timdisney

0

ちょうど私がここにあなたのコードを試してみましたが、クラスにアクセスするには何の問題を持っていない、その名前

class @ClassName 
    blablabla: -> blablalblablabla 
関連する問題