2011-09-23 5 views
12

Si tengo una clase de Coffeescript definida en un archivo separado al que estoy llamando desde mi script principal. Puedo hacer visibles las funciones dentro del archivo, pero no la clase.Exportar una clase desde un archivo de Coffeescript

archivo incluido es:

root = exports ? this 

root.add = (a, b) -> 

     return a + b 

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

puedo acceder a la función de mi código principal. ¿Cómo puedo crear la clase?

+0

Probé su código aquí y tengo problemas para acceder a la clase. Si llamo a 'u = new test.userModel()', 'u' contendrá un objeto, como se esperaba, y el objeto será una instancia de' test.userModel' (el archivo que utilicé para la prueba es 'test.coffee 'y lo importó con' test = require './test'') – brandizzi

+0

Gracias por su ayuda a todos. El problema se debió a un problema al acceder a la clase en el cuerpo principal del código – tooba

Respuesta

6

Su código de hecho hará que userModel sea global, suponiendo que exports no está definido y this es window. Si tiene problemas, verifique esas condiciones.

2

El formulario class ... es una expresión que devuelve un valor. Por lo tanto, querrá asignar el resultado de esa expresión class a una propiedad en su objeto de exportación. De este modo:

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

Actualización:

Vaya, no es cierto, debería funcionar bien sea como class root.userModel o como root.userModel = class userModel.

+0

Ese no es el caso, 'class root.userModel' compila a' '' root.userModel = (function() { function userModel() {... } return userModel; })(); '' ' –

+0

Sí, tienes razón. Fue demasiado rápido en la respuesta. Debería funcionar bien de cualquier manera. – timdisney

0

acaba de definir la clase con una '@' antes de su nombre

class @ClassName 
    blablabla: -> blablalblablabla 
Cuestiones relacionadas