2011-09-23 18 views
12

Ana komutumdan aradığım ayrı bir dosyada tanımlanmış bir Coffeescript sınıfım varsa. Dosyadaki işlevleri global olarak görünür hale getirebilirim, ancak sınıfta değil.Coffeescript dosyasından bir sınıf dışa aktarma

Dahil dosyasıdır:

root = exports ? this 

root.add = (a, b) -> 

     return a + b 

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

benim ana kodundan işlevini erişebilirler. Dersi nasıl oluşturabilirim?

+0

önüne bir '@' ile sınıfını tanımlar. Eğer 'u = new test.userModel() 'diye adlandırırsam,' u 'beklendiği gibi bir nesne içerecektir ve nesne' test.userModel 'örneğinin bir örneği olacaktır (test için kullandığım dosya' test.coffee'dir. 've 'test = require' ile içe aktarın./test '') – brandizzi

+0

Yardımlarınız için teşekkürler herkese. Sorun, kodun ana gövdesindeki sınıfa erişme sorunu nedeniyle oldu – tooba

cevap

6

Kodunuz gerçekten exports tanımsız ve thiswindow olduğunu varsayarak, userModel küresel yapacaktır. Sorun yaşıyorsanız, bu koşulları kontrol edin.

2

class ... formu, bir değer döndüren bir ifadedir. Yani, bu class ifadesinin sonucunu dışa aktarma nesnesindeki bir özelliğe atamak istersiniz.

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

Güncelleme:

Üzgünüz, doğru değil, class root.userModel olarak ya root.userModel = class userModel olarak ya iyi çalışması gerekir böylece gibi.

+0

Bu durum, 'root.userModel' derler '' 'root.userModel = (function() { function userModel() {... } return userModel; })(); '' ' –

+0

Evet, haklısın. Cevap çok hızlıydı. Her iki şekilde de iyi çalışmalı. – timdisney

0

yalnızca adından Burada kodunuzu çalıştı ve sınıfını erişimde sorun yok

class @ClassName 
    blablabla: -> blablalblablabla 
İlgili konular