2013-08-09 16 views
8

Sono nuovo di meteorite e coffeescript. Sto usando il layout dei file suggerito nelle FAQ di Unofficial Meteor. In collezioni di file/C.coffee, hoIn meteor 0.6.4.1/coffeescript, come funziona la visibilità variabile?

C = new Meteor.Collection 'C' 
console.log "C: #{C}" 

Nel file server/main.coffee, ho

C.insert {test: 'test'} 

Quando inizio meteora, vedo sulla console:

C: [object Object] 
ReferenceError: C is not defined 
    at app/server/main.coffee.js:5:1 
    at /home/xxx/yyy/.meteor/local/build/server/server.js:298:12 

Come posso rendere C disponibile nei file al di fuori delle collezioni/C.coffee?

Aggiornamento: l'aggiunta di @ a C risolve il problema al livello superiore. Tuttavia non riesce ancora con:

Meteor.methods 
     test: (statement) -> 
      @C.insert {test: 'test'} 

Non riesce con un errore TypeError: Cannot call method 'insert' of undefined

+0

http://stackoverflow.com/questions/15831144/global-classes-with-meteor-0-6-0-and-coffeescript bisogna usare @ davanti C – Suburbio

+0

Grazie, Subrubio. Qualche suggerimento sul mio esempio aggiornato? – Jerry

+0

È necessario utilizzare @/questo solo quando si imposta la variabile globale. – Suburbio

risposta

13

Per rendere C visibile all'esterno il file è stato definito in uso @, che compila a this. o window. in js, che gli conferisce la stesso effetto di una portata globale:

@C = new Meteor.Collection 'C' 
+0

Grazie. L'ho provato una volta e non è riuscito, quindi ho pensato che fosse sbagliato. Funziona bene al massimo livello. Ma sto anche cercando di usare C all'interno di una chiamata Meteor.methods. C'è un equatore alla finestra. sul lato server? – Jerry

+0

Dal lato server, penso che farebbe "questo" invece, poiché non c'è una finestra sul server – Akshat

+0

Si prega di consultare il mio esempio aggiornato. @ inside of test() punta a qualcosa di diverso. – Jerry

Problemi correlati