2011-09-23 16 views
12

Se ho una classe Coffeescript definita in un file separato che sto chiamando dal mio script principale. Posso rendere le funzioni all'interno del file globalmente visibili, ma non la classe.Esportare una classe da un file Coffeescript

file incluso è:

root = exports ? this 

root.add = (a, b) -> 

     return a + b 

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

posso accedere alla funzione dal mio codice principale. Come posso creare la classe?

+0

ho provato qui il codice e ho problemi di accesso alla classe. Se chiamo 'u = new test.userModel()' allora 'u' conterrà un oggetto, come previsto, e l'oggetto sarà un'istanza di' test.userModel' (il file che ho usato per il test è 'test.coffee 'e l'ho importato con' test = require './test'') – brandizzi

+0

Grazie per il vostro aiuto a tutti. Il problema era dovuto a un problema di accesso alla classe nel codice principale del codice – tooba

risposta

6

Il codice farà effettivamente userModel un globale, supponendo che exports non sia definito e this sia window. Se hai problemi, controlla quelle condizioni.

2

Il modulo class ... è un'espressione che restituisce un valore. Pertanto, ti consigliamo di assegnare il risultato di quell'espressione class a una proprietà sull'oggetto di esportazione. In questo modo:

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

Aggiornamento:

Ops, non è vero, dovrebbe funzionare bene sia come class root.userModel o come root.userModel = class userModel.

+0

Questo non è il caso, 'classe root.userModel' compila a' '' root.userModel = (function() { function userModel() {... } return userModel; })(); '' ' –

+0

Sì, hai ragione. Era troppo veloce per la risposta. Dovrebbe funzionare bene in entrambi i modi. – timdisney

0

basta definire la classe con un '@' prima del suo nome

class @ClassName 
    blablabla: -> blablalblablabla 
Problemi correlati